Re: По поводу
От: retalik www.airbandits.com/
Дата: 21.01.02 05:12
Оценка:
А она у нас глючит до сих пор :(
Успехов,
Виталий.
Re: Гхм... ;)
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.02 17:40
Оценка:
А ты можешь их отделить?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re: Но не забудьте, что такой файл будет медленнее
От: Alex Fedotov США  
Дата: 16.02.02 15:51
Оценка: 22 (2)
Эта оптимизация (/opt:win98) позволяет существенно более эффективно кэшировать исполняемые файлы ущербному менеджеру виртуальной памяти в Win98. Эффект сказывается не на первой загрузке, а на последующих, или, в случае DLL, когда много процессов используют одну и ту же DLL.

Все разговоры про NT и NTFS совершенно бессмысленны, так как при выполнении на NT эта опция не имеет никакого значения.
-- Alex Fedotov
Вроде, пофиксили
От: retalik www.airbandits.com/
Дата: 27.01.02 21:30
Оценка:
Успехов,
Виталий.
Вот для того и статья :)
От: retalik www.airbandits.com/
Дата: 24.01.02 19:13
Оценка:
Если, например, юзать LIBCTINY.LIB от Питрека, такая программа на C++ и за 4 Кб не зашкалит (лень пример приводить, но у меня микроинсталлятор с распаковкой файлов и выполнением JScript-сценариев 12 Кб, сжатый — 8 Кб).
Успехов,
Виталий.
Re: Но не забудьте, что такой файл будет медленнее
От: VladD2 Российская Империя www.nemerle.org
Дата: 13.12.02 17:38
Оценка:
А ты этот эффект мерял? Он в мили- или в микро-секундах измеряется? :)

И вообще я бы всем посоветовал поменьше общяться с Win9x. Нервы будут крепче. :))
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[2]: Гхм... ;)
От: Dimentiy Россия  
Дата: 18.12.03 16:05
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А ты с Дельфевыми 300 кило сравни...


D>Очевидно, сравнивать библиотеки классов с инициализационным рантаймом — не есть гуд.


VD>А ты можешь их отделить?


Разумеется могу. Не использовать vcl. Рантайм дельфей — килобайт 15-ть.
Re: Анатомия C Run-Time, или Как сделать программу немного м
От: Tuo_Bellas Россия  
Дата: 27.07.04 12:33
Оценка:
Здравствуйте, Виталий Брусенцев, Вы писали:

ВБ>Статья :



ВБ>Авторы :

ВБ>Виталий Брусенцев

ВБ>Аннотация :

ВБ>Статья посвящена вопросам оптимизации размера выполняемых модулей, генерируемых различными
ВБ>компиляторами C++ (основное внимание уделено MS Visual С++). С этой целью рассматриваются особенности Библиотеки исполнения C/C++ и ее реализаций, а также процессы компиляции и компоновки приложений. Приведены практические приемы, позволяющие в ряде случаев уменьшить размер приложения до величины 3-4 килобайта.

Отличная статья. Спасибо.

Nitpicking:

Первое. (К движку сайта) При ответе на оригинальное сообщение
Автор: Виталий Брусенцев
Дата: 20.01.02
, название статьи не пишется (см. в цитате выше).

Второе. Ссылка на статью Matt Pietrek'а "Reduce EXE and DLL Size with LIBCTINY.LIB" битая. Теперь это
http://msdn.microsoft.com/msdnmag/issues/01/01/hood/default.aspx .

Tuo_Bellas.
Re: Анатомия C Run-Time, или Как сделать программу немного м
От: Ash-2 Россия  
Дата: 13.09.04 15:39
Оценка:
Здравствуйте, Виталий Брусенцев, Вы писали:

Статья очень хорошая.

Вопросов два (Win2k и выше):
1. Можно ли использовать IDE VC++ 7.1 для варианта "без CRT"?
Насколько я понял vc честно предлагает выбрать "тип" crt, но отказаться от него нельзя...
2. Опять "вариант без CRT": а что я теряю в плане вычислений с плавающей точкой? И что делает компилятор для "устранения ошибки процессора (intel) в операциях с плавающей точкой"?

P.S. Поскольку crt используется не очень активно есть соблаз отказаться от нее, поэтому и вопросы...
Re[2]: Анатомия C Run-Time, или Как сделать программу немног
От: _nn_  
Дата: 13.09.04 17:37
Оценка:
Здравствуйте, Ash-2, Вы писали:

A2>Здравствуйте, Виталий Брусенцев, Вы писали:


A2>Статья очень хорошая.


A2>Вопросов два (Win2k и выше):

A2>1. Можно ли использовать IDE VC++ 7.1 для варианта "без CRT"?
В VC 7.1 можно тоже отказаться от CRT
A2>Насколько я понял vc честно предлагает выбрать "тип" crt, но отказаться от него нельзя...
Да можно, в опциях выбрать /MD и выбрать entrypoint : main.
A2>2. Опять "вариант без CRT": а что я теряю в плане вычислений с плавающей точкой? И что делает компилятор для "устранения ошибки процессора (intel) в операциях с плавающей точкой"?

A2>P.S. Поскольку crt используется не очень активно есть соблаз отказаться от нее, поэтому и вопросы...

Можно попробовать использовать _ATL_MIN_CRT тогда будет приемлимая функциональность и не будет большой размер, но если размер критичен и есть желание реализовать выделение памяти и инициализацию глобальных объектов руками то можно отказаться от CRT.
Примечание: если в программе используется STL, то в VC 7.1 от CRT отказаться нельзя.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Анатомия C Run-Time, или Как сделать программу немног
От: retalik www.airbandits.com/
Дата: 13.09.04 17:56
Оценка: 4 (1)
Здравствуйте, Ash-2, Вы писали:

A2>1. Можно ли использовать IDE VC++ 7.1 для варианта "без CRT"?

A2>Насколько я понял vc честно предлагает выбрать "тип" crt, но отказаться от него нельзя...

Можно, например, для ATL это выполняется линковкой с библиотекой atlmincrt.lib.
Другой вариант — использовать библиотеку Мэтта Питрека (включить в проект один файл mincrt.cpp).

Я еще уменьшал размер полученного EXE, отключая так называемую security check: проверку переполнения буфера.
Алекс Федотов предлагал недавно свой вариант, мой достигается включением в проект такого файла:


#include <windows.h>

#if defined(NDEBUG) && defined(_ATL_MIN_CRT)

DWORD_PTR __security_cookie = 0xBB40E64E;

#pragma warning(disable:4100)

void __fastcall __security_check_cookie(DWORD_PTR cookie)
{
}

static _secerr_handler_func user_handler;

#pragma warning(disable:4100)

void __cdecl __security_error_handler(int code, void *data)
{
}

_secerr_handler_func __cdecl _set_security_error_handler(
    _secerr_handler_func handler)
{
    _secerr_handler_func old_handler;
    old_handler = user_handler;
    user_handler = handler;

    return old_handler;
}

void __cdecl __buffer_overrun()
{
}

_secerr_handler_func __cdecl __set_buffer_overrun_handler(
    _secerr_handler_func handler)
{
    return _set_security_error_handler(handler);
}

void __cdecl __security_init_cookie(void)
{
}

#endif


A2>2. Опять "вариант без CRT": а что я теряю в плане вычислений с плавающей точкой?


Да ничего, практически. Эмуляция в современных процессорах не нужна, а большинство функций (sin, cos) доступны в inline-варианте (/Oi).

A2>И что делает компилятор для "устранения ошибки процессора (intel) в операциях с плавающей точкой"?

Не в курсе. Видимо, вместо DIV генерирует в некоторых случаях серию других инструкций. Вероятность попадания на такой процессор ничтожна — лично я пишу софт не для спутников.
Успехов,
Виталий.
Re[3]: Анатомия C Run-Time, или Как сделать программу немног
От: retalik www.airbandits.com/
Дата: 13.09.04 17:58
Оценка:
Здравствуйте, _nn_, Вы писали:

__>Можно попробовать использовать _ATL_MIN_CRT тогда будет приемлимая функциональность и не будет большой размер, но если размер критичен и есть желание реализовать выделение памяти и инициализацию глобальных объектов руками то можно отказаться от CRT.


Используйте mincrt.lib от Питрека и будет щастье

__>Примечание: если в программе используется STL, то в VC 7.1 от CRT отказаться нельзя.


Да, со стандартной библиотекой у меня это не получилось, а вот STLPort отучить от CRT можно.
Успехов,
Виталий.
Re[4]: Анатомия C Run-Time, или Как сделать программу немног
От: Ash-2 Россия  
Дата: 14.09.04 12:00
Оценка:
Здравствуйте, retalik, Вы писали:

R>Используйте mincrt.lib от Питрека и будет щастье


Да, видимо так и надо поступить... уже скачал, буду разбираться
Re[3]: Анатомия C Run-Time, или Как сделать программу немног
От: Ash-2 Россия  
Дата: 14.09.04 12:05
Оценка:
Здравствуйте, _nn_, Вы писали:

A2>>1. Можно ли использовать IDE VC++ 7.1 для варианта "без CRT"?

__>В VC 7.1 можно тоже отказаться от CRT
A2>>Насколько я понял vc честно предлагает выбрать "тип" crt, но отказаться от него нельзя...
__>Да можно, в опциях выбрать /MD и выбрать entrypoint : main.
Насколько я понял это не выход.
Конечно, надо попробовать и посмотреть, что сотворит VC, но из поста напрашивается лишь один вывод: я просто меняю имя функции "пользовательского входа в программу". Иными словами используется та же crt, но вызывает она не WinMain и main (на ее место м.б. любая функция)...
Re[4]: Анатомия C Run-Time, или Как сделать программу немног
От: retalik www.airbandits.com/
Дата: 16.09.04 05:46
Оценка: 6 (1) :)
Здравствуйте, Ash-2, Вы писали:

__>>Да можно, в опциях выбрать /MD и выбрать entrypoint : main.

A2>Насколько я понял это не выход.
A2>Конечно, надо попробовать и посмотреть, что сотворит VC, но из поста напрашивается лишь один вывод: я просто меняю имя функции "пользовательского входа в программу". Иными словами используется та же crt, но вызывает она не WinMain и main (на ее место м.б. любая функция)...

Нет, опция /entry линкера задает имя функции — реальной стартовой точки. По умолчанию она указывает на функцию инициализации CRT (xxxCRTStartup), соответственно, указывая в этой опции main, получаем вызов main без CRT.
Но этот способ не из лучших: глобальные конструкторы мне слишком дороги.
Успехов,
Виталий.
Re: libc.lib в 8-ой студии
От: Аноним  
Дата: 07.08.05 20:52
Оценка:
Отсутствует сабж? А почему?
Re[2]: libc.lib в 8-ой студии
От: Аноним  
Дата: 07.08.05 22:48
Оценка:
Здравствуйте, Аноним, Вы писали:

И это
extern "C" int _fltused = 0;

почему то не устраивает?
Re[3]: libc.lib в 8-ой студии
От: retalik www.airbandits.com/
Дата: 07.08.05 22:51
Оценка:
Здравствуйте, Аноним, Вы писали:

А>И это

А>
А>extern "C" int _fltused = 0;
А>

А>почему то не устраивает?

Сорри, 8 студию пока еще руками не трогал. Видимо, там многое поменялось в части CRT.
Успехов,
Виталий.
Re[4]: libc.lib в 8-ой студии
От: Аноним  
Дата: 08.08.05 07:24
Оценка:
Здравствуйте, retalik, Вы писали:

R>Здравствуйте, Аноним, Вы писали:


А>>И это

А>>
А>>extern "C" int _fltused = 0;
А>>

А>>почему то не устраивает?

Ставим

Visual C++ Compiler Options 
/fp:[precise | except[-] | fast | strict ]

в

fast 
Creates the fastest code in the majority of cases. /fp:fast cannot be used with /fp:strict or /fp:precise, the last option specified on the command line will be used. /fp:fast and /fp:except will generate a compiler error. Selecting /Za (ANSI compatibility) and /fp:fast may result in unexpected behavior. For example, single-precision floating-point operations may not be rounded to single precision. 
except[-]


работает,
да, непонятно
Re: Кое что лишнее
От: unreg_flex  
Дата: 08.08.05 16:01
Оценка:
Здравствуйте, abraksas, Вы писали:

[skipped]

Эту абракадабру вставляет туда M$-овский линкер (сигнатура Rich).
В ней покриптованы некоторые аппаратные ID-шники компа
на котором exe-шник компилили.
Для чего это нужно не знаю. Толи чтоб автора было легче найти, толи так, для развлекухи.
Впрочем енто легко лечится. В нете валяются патчи на link.exe
После применения которых, там остаются только приятные глазу нули.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.