powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как получить итоговый текст программы?
10 сообщений из 10, страница 1 из 1
Как получить итоговый текст программы?
    #39586019
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В программе используются функции из библиотек С / С++, поэтому не понятно где, например, происходит выделение памяти.

Я с помощью Vtune Amplifier обнаружил, что в моей многопоточной программе основное время занимает оператор new. Хотя появится ему негде (все строки std::string объявляются перед циклом и передаются в функции по ссылкам, а остальные все данные примитивных типов).

Может как- то можно отловить "библиотечные" выделения памяти без результирующего кода?
...
Рейтинг: 0 / 0
Как получить итоговый текст программы?
    #39586044
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Присвоение одного объекта другому вызывает конструктор копирования.

P.S. Купите того же Мейерса ([Most] Effective C++) - там всё популярно изложено.
...
Рейтинг: 0 / 0
Как получить итоговый текст программы?
    #39586045
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Как получить итоговый текст программы?
    #39586051
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нашел ошибку! Я вызывал функции:
Код: plaintext
1.
2.
3.
stoi
stol
stoll



передавая char*, поэтому происходило неявное преобразование к std::string (и выделение памяти). Надо было использовать аналоги:
Код: plaintext
1.
2.
3.
atoi
atol
atoll
...
Рейтинг: 0 / 0
Как получить итоговый текст программы?
    #39586054
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Про неявное приведение типов у Мейерса тоже есть ...
...
Рейтинг: 0 / 0
Как получить итоговый текст программы?
    #39586139
Вася Уткин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AlekseySQLВ программе используются функции из библиотек С / С++, поэтому не понятно где, например, происходит выделение памяти.

Я с помощью Vtune Amplifier обнаружил, что в моей многопоточной программе основное время занимает оператор new. Хотя появится ему негде (все строки std::string объявляются перед циклом и передаются в функции по ссылкам, а остальные все данные примитивных типов).

Может как- то можно отловить "библиотечные" выделения памяти без результирующего кода?
Так а можно же посмотреть дерево вызовов и найти вызовы всех функций которые больше всего потребляют ресурсов, и в Vtune Amplifier, и в MS Visual Studio Profiler:



...
Рейтинг: 0 / 0
Как получить итоговый текст программы?
    #39586159
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQL,

ещё можно сделать перехват вызова malloc.
...
Рейтинг: 0 / 0
Как получить итоговый текст программы?
    #39586678
AlekseySQL
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вася Уткин, я так и нашел ошибку (с помощью Vtune Amplifier).

Но все же тут только дерево вызовов. А если у меня какая-то функция вызывается много раз, то какое место вызова "горячее". Если учесть, что в дереве не показываются "промежуточные" по стеку вызовов функции с низкой ценой, то ситуация становится адски запутанной. Или как в моем случае: дерево показывает вызов функции, а ее вообще не должно было вызываться (причем ведь он мне практически на корень показывал, опустив промежуточный процедурный стек...). Вывод: для простоты профилирования надо писать простой код :)

Я привык к транслируемому 1с, в котором показывается время исполнения каждой функции и даже каждой инструкции. Понятное дело, что в скомпилированном коде С++ такого не будет. Но может есть какая-то хитрушка: ведь не зря существует режим сборки "профилирование"... Хотя в инструкции к Vtune Amplifier написано использовать Realese- сборку.
...
Рейтинг: 0 / 0
Как получить итоговый текст программы?
    #39586717
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLА если у меня какая-то функция вызывается много раз, то ..
... то сам следи что там происходит.

С/С++ быстры потому что разработчик сам следит чтобы себе в ногу не стрелять. Одного забытого & в параметрах достаточно чтобы словить тормоз на конструкторах копирования.
...
Рейтинг: 0 / 0
Как получить итоговый текст программы?
    #39586782
Фотография CEMb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AlekseySQLв котором показывается время исполнения каждой функции и даже каждой инструкциисейчас работаю в 17-й студии, там в дебаге тоже показывается время выполнения на каждой строчке. И ещё сбоку какие-то панельки про производительность :) раньше их не было, я ещё не разбирался, висят, рисуют графики какие-то :)
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как получить итоговый текст программы?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]