Ненавижу BGCPControlBar.
Одна из самых "индусокодных" библиотек, не смотря на то, что написана русскими.
Мега-функции на пару тысяч строк. Невиртуальность тех функций, которые следовало бы сделать виртуальными.
Типичный стиль работы с ней -- отнаследоваться, переопределить одну-две функции, ПОЛНОСТЬЮ скопировав их тела из исходников, а потом подправить одно-два условия.
У нас в конторе есть даже особый мем --"багабецеже".
А теперь эту гадость включили в состав нового MFC в 2008й и 2010й студиях.
Вот и сегодня поправил багу у них, из-за которой мой софт грузился на 6 секунд! дольше. Буст с 16 до 10 секунд -- вполне заметный прирост.
Суть баги -- CBCGPShellTree долго строит дерево папок. Если надо показать c:\users\bitfield\desktop, то делает оно это 8 секунд! Логи показали, что 6 секунд оно строит список файлов для папки Computer, а вернее, 5-6 секунд висит на GetAttributesOf у первого элемента, пытаясь узнать, есть ли в нем подпапки.
Догадались?
Первый элемент -- конечно же A:, но дисковода у меня нет физически. Добавил проверку на removable и вуаля, эта ветка дерева строится уже за 0.5 секунды.
Посмотрел исходики в MFC 2008|2010. (файл AfxShellTreeCtrl.cpp). Там эта бага не исправлена.
2010-12-28
2010-12-20
Автоматическое обновление svn:externals
В текущем проекте через svn:externals подключается 25 либ, причем не в единый корень, а в нескольких местах (в 5 или 6 местах).
Написал тут скрипт, который автоматически выставляет экстерналы на нужные ревизии.
Написал тут скрипт, который автоматически выставляет экстерналы на нужные ревизии.
2010-12-14
[boost.build][trick] Ускорение сборки в boost.build
boost.build всем хорош, кроме скорости.
К примеру, анализ того, какие файлы надо пересобрать, на моем проекте (30+ либ + boost) занимает 42 секунды.
Оказывается, решение было найдено полтора года назад.
http://lists.boost.org/boost-build/2009/04/21734.php
Человек переписал стандартный анализатор инклюдов так, чтоб тот игнорировал файлы по регекспу.
добавив "в игнор" стандартные хедеры (у них нет расширения) и хедеры буста (^boost/) - получил время анализа в 22 секунды.
Уже можно жить...
К примеру, анализ того, какие файлы надо пересобрать, на моем проекте (30+ либ + boost) занимает 42 секунды.
Оказывается, решение было найдено полтора года назад.
http://lists.boost.org/boost-build/2009/04/21734.php
Человек переписал стандартный анализатор инклюдов так, чтоб тот игнорировал файлы по регекспу.
добавив "в игнор" стандартные хедеры (у них нет расширения) и хедеры буста (^boost/) - получил время анализа в 22 секунды.
Уже можно жить...
2010-11-26
рабочее
Бета-тестер: кста что интересно оказалось
ты собираешь инсталлятор foo_bar.exe
я его переименовываю для вебщиков в foo_bar_baz.exe
а они его для сайта переименовывают в foo_bar.exe
ты собираешь инсталлятор foo_bar.exe
я его переименовываю для вебщиков в foo_bar_baz.exe
а они его для сайта переименовывают в foo_bar.exe
2010-10-11
Одобе такое одобе
Есть проект, сохраненный как Flash CS5 Uncompressed Document.
Так вот, если файл DOMDocument.xml (хранящий содержимое основного таймлайна) чем-то занят (да хотя-бы просматривается по f3 из FAR-а), то при сохранении Adobe Flash CS5 конечно-же упадет.
И заберет DOMDocument.xml с собой в Валхаллу.
Понятное дело, что после перезапуска этот проект уже не откроется.
Хорошо хоть проект был заHGшен.
Так вот, если файл DOMDocument.xml (хранящий содержимое основного таймлайна) чем-то занят (да хотя-бы просматривается по f3 из FAR-а), то при сохранении Adobe Flash CS5 конечно-же упадет.
И заберет DOMDocument.xml с собой в Валхаллу.
Понятное дело, что после перезапуска этот проект уже не откроется.
Хорошо хоть проект был заHGшен.
2010-09-28
программирование похоже на ходьбу по лабиринту -- можно замерить и даже увеличить линейную скорость ходьбы, но это не заменит намного более важного правильного выбора на перекрестках.
(c)
(c)
2010-09-08
2010-08-26
Странное (о выравнивании)
MSVC: bool 2 3 4 char 2 3 4 short 4 6 8 int 8 12 16 GCC bool 2 3 4 char 2 3 4 short 2 4 4 int 4 8 8
Подписаться на:
Сообщения (Atom)
