Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
17.01.2018, 18:25
|
|||
|---|---|---|---|
|
|||
Как получить итоговый текст программы? |
|||
|
#18+
В программе используются функции из библиотек С / С++, поэтому не понятно где, например, происходит выделение памяти. Я с помощью Vtune Amplifier обнаружил, что в моей многопоточной программе основное время занимает оператор new. Хотя появится ему негде (все строки std::string объявляются перед циклом и передаются в функции по ссылкам, а остальные все данные примитивных типов). Может как- то можно отловить "библиотечные" выделения памяти без результирующего кода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2018, 19:05
|
|||
|---|---|---|---|
|
|||
Как получить итоговый текст программы? |
|||
|
#18+
Присвоение одного объекта другому вызывает конструктор копирования. P.S. Купите того же Мейерса ([Most] Effective C++) - там всё популярно изложено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2018, 19:08
|
|||
|---|---|---|---|
|
|||
Как получить итоговый текст программы? |
|||
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2018, 19:18
|
|||
|---|---|---|---|
|
|||
Как получить итоговый текст программы? |
|||
|
#18+
Нашел ошибку! Я вызывал функции: Код: plaintext 1. 2. 3. передавая char*, поэтому происходило неявное преобразование к std::string (и выделение памяти). Надо было использовать аналоги: Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
17.01.2018, 19:21
|
|||
|---|---|---|---|
|
|||
Как получить итоговый текст программы? |
|||
|
#18+
Про неявное приведение типов у Мейерса тоже есть ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.01.2018, 01:29
|
|||
|---|---|---|---|
|
|||
Как получить итоговый текст программы? |
|||
|
#18+
AlekseySQLВ программе используются функции из библиотек С / С++, поэтому не понятно где, например, происходит выделение памяти. Я с помощью Vtune Amplifier обнаружил, что в моей многопоточной программе основное время занимает оператор new. Хотя появится ему негде (все строки std::string объявляются перед циклом и передаются в функции по ссылкам, а остальные все данные примитивных типов). Может как- то можно отловить "библиотечные" выделения памяти без результирующего кода? Так а можно же посмотреть дерево вызовов и найти вызовы всех функций которые больше всего потребляют ресурсов, и в Vtune Amplifier, и в MS Visual Studio Profiler: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.01.2018, 05:27
|
|||
|---|---|---|---|
Как получить итоговый текст программы? |
|||
|
#18+
AlekseySQL, ещё можно сделать перехват вызова malloc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.01.2018, 19:13
|
|||
|---|---|---|---|
|
|||
Как получить итоговый текст программы? |
|||
|
#18+
Вася Уткин, я так и нашел ошибку (с помощью Vtune Amplifier). Но все же тут только дерево вызовов. А если у меня какая-то функция вызывается много раз, то какое место вызова "горячее". Если учесть, что в дереве не показываются "промежуточные" по стеку вызовов функции с низкой ценой, то ситуация становится адски запутанной. Или как в моем случае: дерево показывает вызов функции, а ее вообще не должно было вызываться (причем ведь он мне практически на корень показывал, опустив промежуточный процедурный стек...). Вывод: для простоты профилирования надо писать простой код :) Я привык к транслируемому 1с, в котором показывается время исполнения каждой функции и даже каждой инструкции. Понятное дело, что в скомпилированном коде С++ такого не будет. Но может есть какая-то хитрушка: ведь не зря существует режим сборки "профилирование"... Хотя в инструкции к Vtune Amplifier написано использовать Realese- сборку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
18.01.2018, 20:46
|
|||
|---|---|---|---|
Как получить итоговый текст программы? |
|||
|
#18+
AlekseySQLА если у меня какая-то функция вызывается много раз, то .. ... то сам следи что там происходит. С/С++ быстры потому что разработчик сам следит чтобы себе в ногу не стрелять. Одного забытого & в параметрах достаточно чтобы словить тормоз на конструкторах копирования. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
19.01.2018, 05:19
|
|||
|---|---|---|---|
Как получить итоговый текст программы? |
|||
|
#18+
AlekseySQLв котором показывается время исполнения каждой функции и даже каждой инструкциисейчас работаю в 17-й студии, там в дебаге тоже показывается время выполнения на каждой строчке. И ещё сбоку какие-то панельки про производительность :) раньше их не было, я ещё не разбирался, висят, рисуют графики какие-то :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&tablet=1&tid=2017995]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 254ms |

| 0 / 0 |
