Делаю dll видео кодака на основе преобразования Хаара ясно скорость компрессии декомпрессии здесь самый критический момент. Для теста берем color картинку 768*1024. VC++ Studio 2003 со всеми включенными флагами оптимизации и т.д его сгенерированный код выдает 180ms на сжатие картинки (Хаара преобразование простое без плавающих чисел только деление на два сложение да умножение ни каких сложных инструкций). Делаю код компрессии на asm в MASM v.7, все функции делаю inline и т.д., (dll размера 3Kb по сравнению с 180kb у VC++)... ..Но неужто VC++ компилятор делает настолько качественный код, что dll на asm дала 165ms на компрессию, или VC++ оптимизируется както для dll написанных на нем же (тест dll проходил из VC++)? (код на asme я сделал по подобию алгоритма на С, т.е. алгоритмы одни и теже только разные их реализации и компиляторы)
9ine Если просто переводить конструкции C на ассемблер, то естественно что существенного выигрыша не будет. А вообще без кода сложно что либо сказать, может там и деление не нужно ...
попробуй скомпилить то же самое со свежим интеловским компилятором с разными настройками.. будешь удивлен
Хммм. Я могу сказать что на VC++ 2003 генерил очень близкий к оптимальному код... Если на асме длл - 3кб то я бы и на VC 3кб сделал бы... Например простенький FM-MIDI синтезатор с GUI, абоутом и т.д. у мя занял 7кб на VC++ 2003... Единственное что могу сказать, что 180kb у VC++ - это непростительно много ) - точно можно сделать меньше, да и скорость ассемблера догнать тоже можно...
to semen. Как сократить VC++ 2003 код dll до меньше 10K, сам чистый код одна математика по размеру не больше нескольких Kb, остальное VC раздувает добавляя кучу функций из kernel32.dll, user32.dll, gdi32.dll, advapi32.dll и т.д
9ine Хы - а ты не юзай дефолтный crt. Если хочешь - могу свой minicrt выслать - его и юзаю - тока там багов наверно дофига...
вообше конфигурация Realease mfc в статик либрари, хотя код mfc я в ней не использую но VC++ делает dll без dllentry, если можно убрать оттуда mfc совсем?