Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
| |
[Win32] Кстати, об оптимизации (по размеру) 14.03.02 12:09 Число просмотров: 973
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
Зайди на http://www.uinc.ru/articles/
Там есть моя статейка про написания программ без RTL.
Т.е. в твоем случае это будет очень выгодно. Лишних кил 26-28 уберешь.
Минимально прога может занимать до 1К
http://www.uinc.ru/articles/
|
<programming>
|
[Win32] Глюк с оптимизацией 13.03.02 23:18
Автор: Developer Статус: Незарегистрированный пользователь
|
В Visual C++ 6.0 написал программу, в которой трижды используется написанная мной функция. В режиме отладки (т.е. без оптимизации) вызовы этой функции проходят корректно во всех трех местах. С оптимизацией два вызова этой функции срабатывают, а третий вызов возвращает всякий мусор. В чем ошибка? Что делать? Не использовать оптимизацию? (в моем случае это не критично,т.к оптимизированная нерабочая версия занимает 36 Кб, а рабочая неоптимизированная - 40 Кб)
|
|
Код посмотреть можно ? 15.03.02 15:48
Автор: PS <PS> Статус: Elderman
|
Самой ф-ии и ее вызовов. Очень часто в дебагере не прявляются ошибки связанные с памятью. В релизе проги падают на счет раз. Может и не при чем оптимизация.
|
| |
[Win32] Код посмотреть можно ? Можно! 15.03.02 22:45
Автор: Developer Статус: Незарегистрированный пользователь
|
есть функция:
char* Split (char* source,int iNum)
{
char string[MAX_PATH]
............ операции с этой переменной
return string;
}
Другая функция:
void resolve()
{
char tmp[MAX_PATH];
memset(tmp,0,sizeof(tmp));
strcat(tmp,Split(Program_Path,1)); (здесь в "оптимизированной" версии возвращается всякий мусор)
}
в чем дело?
|
| | |
[Win32] Код посмотреть можно ? Можно! 15.03.02 23:14
Автор: + <Mikhail> Статус: Elderman
|
> есть функция: > char* Split (char* source,int iNum) > {
!!!!!!!!! BOT SDES~ !!!!!!!!!!!!!!
> char string[MAX_PATH]
string zadeclarirovana kak local peremennaia v etoi Split function, a ty vozvrachaesh pointer na etu peremennuu, estestvenno etot pointer invalid kak tolko function exits.
> ............ операции с этой переменной > return string; > } > Другая функция: > void resolve() > { > char tmp[MAX_PATH]; > memset(tmp,0,sizeof(tmp)); > strcat(tmp,Split(Program_Path,1)); (здесь в > "оптимизированной" версии возвращается всякий мусор) > } > > в чем дело?
|
| | | |
[Win32] Код посмотреть можно ? Можно! 15.03.02 23:36
Автор: Developer Статус: Незарегистрированный пользователь
|
ok, все понятно. надо быть осторожней с указателями.
|
|
[Win32] Глюк с оптимизацией 15.03.02 12:16
Автор: ih8u <i hate you> Статус: Member
|
А как ты делаешь саму оптимизацию??
Работает ли нормально без оптимизации??
|
|
[Win32] Глюк с оптимизацией 14.03.02 08:07
Автор: ggg <ggg> Статус: Elderman
|
посмотри что там на самом деле сгенерилось
в отладчике или в иде
может это глюк и без оптимизации в некоторых редких ситуациях тоже будет проявляться
|
| |
[Win32] Кстати, об оптимизации (по размеру) 14.03.02 12:09
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
Зайди на http://www.uinc.ru/articles/
Там есть моя статейка про написания программ без RTL.
Т.е. в твоем случае это будет очень выгодно. Лишних кил 26-28 уберешь.
Минимально прога может занимать до 1К
http://www.uinc.ru/articles/
|
| | |
[Win32] Кстати, об оптимизации (по размеру) 15.03.02 14:50
Автор: ntlm Статус: Незарегистрированный пользователь
|
> Зайди на http://www.uinc.ru/articles/ > Там есть моя статейка про написания программ без RTL. > Т.е. в твоем случае это будет очень выгодно. Лишних кил > 26-28 уберешь. > Минимально прога может занимать до 1К
Ню-ню.
А причем тут C++??? Попробуй-ка написать ченить с использованием классов - тебе придется реализовывать свой оператор new + менеджер памяти! А нафига такие извраты? Имхо, если rtl линковать динамически, выигрыш в размере будет не меньшим, при сохранении всей функциональности.
|
| | | |
[Win32] это только поначалу непривычно 15.03.02 15:47
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
> Попробуй-ка написать ченить с > использованием классов - тебе придется реализовывать свой > оператор new + менеджер памяти! А нафига такие извраты?
И так пишу.
Это только поначалу непривычно.
Делаешь себе парочку функций нужных, а остальное...
> Имхо, если rtl линковать динамически, выигрыш в размере > будет не меньшим, при сохранении всей функциональности.
Да при чем тут это? Я же говорю что может он совсем не нужен? Т.е. вообще не линковать никак.
Кстати, а если ты думаешь что все проги без RTL "покоцаннно-ущемленные", то посмотри на примеры софта:
http://www.kmint21.com
|
| | | | |
[Win32] это только поначалу непривычно 16.03.02 00:56
Автор: ih8u <i hate you> Статус: Member
|
На самом деле,
делаешь оптимизацию как говарил KMiNT21
и линкуешь с msvcrt.lib
Юзаешь спокойно malloc, free и всё остальное,
и размер реально супер маленький
|
| | | | | |
[Win32] это только поначалу непривычно 17.03.02 22:55
Автор: Biasha <Бяша> Статус: Member
|
> На самом деле, > делаешь оптимизацию как говарил KMiNT21 > и линкуешь с msvcrt.lib > Юзаешь спокойно malloc, free и всё остальное, > и размер реально супер маленький Чем его оптимизация лучше импортов из msvcrt.dll? (плюс убивание выравнивания)
|
| | | | | | |
[Win32] не стоит все в одну кучу валить 21.03.02 11:46
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
> > На самом деле, > > делаешь оптимизацию как говарил KMiNT21 > > и линкуешь с msvcrt.lib > > Юзаешь спокойно malloc, free и всё остальное, > > и размер реально супер маленький
> Чем его оптимизация лучше импортов из msvcrt.dll? (плюс > убивание выравнивания)
Не стоит все смешивать :)
Если не нужно все что есть в RTL - не нужно этот код цеплять.
Если нужно кое-что, совсем мало - можно лишь это и загнать себе в EXE.
Если много нужно - лучше забыть про отключение RTL (а как/когда его цеплять - то уже другой вопрос.).
Вот и все.
|
| | | | | | | |
[Win32] Да ё. За счёт чего оптимизация то? 21.03.02 22:24
Автор: Biasha <Бяша> Статус: Member
|
> > > На самом деле, > > > делаешь оптимизацию как говарил KMiNT21 > > > и линкуешь с msvcrt.lib > > > Юзаешь спокойно malloc, free и всё остальное, > > > и размер реально супер маленький > > > Чем его оптимизация лучше импортов из msvcrt.dll?
> (плюс > > убивание выравнивания) > > Не стоит все смешивать :) > > Если не нужно все что есть в RTL - не нужно этот код > цеплять. Куда цеплять? В ехе'шник - так не попадёт он туда. В память - да, но вероятней всего msvcrt.dll уже там.
> Если нужно кое-что, совсем мало - можно лишь это и загнать > себе в EXE. А можно вообще ничего не загонять - только импорты.
> Если много нужно - лучше забыть про отключение RTL (а > как/когда его цеплять - то уже другой вопрос.). > > Вот и все. Что всё? чем так крута оптимизация KMiNT21, что она лучше стандартной MS'овской?
|
| | | | | | | | |
[Win32] Итак 22.03.02 10:52
Автор: KMiNT21 <http://blog.kmint21.com> Статус: Member
|
> Что всё? чем так крута оптимизация KMiNT21, что она лучше > стандартной MS'овской?
По-первых, я тут не причем. Это не "моя" оптимизация.
Во-вторых, я как раз и говорю - нечего сравнивать такую оптимизацию с MS'ской. Это разные вещи. Сам понимаешь.
|
|
|