|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
06.04.2011, 16:53 | #1 |
пыжашийся нуб
Пользователь
Регистрация: 19.06.2010
Сообщений: 93
|
iterator hot spot
Добрый день. Профилировщик указал на очень горячую точку в программе:
Код:
dist - double** операции вида (*first)[0] - доступ к первому элементу дека, на который указывает итератор Знаю, что страшно, но это оптимизированный кусок кода глубоко внизу. Собственно вопрос: реально ли затратны операции вида (*first)[0] или же этот хотспот может появится просто из-за частоты вызова такой строки? Последний раз редактировалось coinkrsk; 06.04.2011 в 16:56. |
06.04.2011, 17:21 | #2 |
C++ hater
СтарожилДжуниор
Регистрация: 19.07.2009
Сообщений: 3,333
|
сама операция (*first)[0] практически не затратна, другое дело, что ты выбрал странный вид хранения данных (деки в списке), + какой то двумерный массив. если и надо оптимизировать, то уровнем выше, при организации структуры хранения данных
I invented the term Object-Oriented, and I can tell you I did not have C++ in mind. (c)Alan Kay
My other car is cdr. Q: Whats the object-oriented way to become wealthy? A: Inheritance |
07.04.2011, 12:55 | #3 |
пыжашийся нуб
Пользователь
Регистрация: 19.06.2010
Сообщений: 93
|
Да это то как раз сделано для экономии ресурсов. В этом моменте идет кластеризация данных. Дека хранит номера объектов в классе, лист - набор классов. Дека - для дозаписи в конец ( объединение классов ), лист - для удаления из произвольного места. Двумерный массив хранит расстояния между классами, которые хитро пересчитываются при объединении. Вся эта фигня затеяна чтобы не считать каждый раз расстояния между классами. А вообще да, с утра код уже не кажется таким уж нормальным. Буду думать.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
vector iterator not dereferencable | Tramadolly | Общие вопросы C/C++ | 7 | 21.04.2010 08:25 |
Hot Key в ToolBar | Impuls1989 | Общие вопросы Delphi | 7 | 13.10.2009 11:05 |
Hot Key для проги | -=<[Evklidd]>=- | Общие вопросы Delphi | 17 | 19.04.2009 16:24 |
vector<T>::iterator begin - почему не компилируется? | AndyBr | Общие вопросы C/C++ | 5 | 12.03.2009 19:56 |