![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
Farik |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 1.2.2005 Репутация: нет Всего: 1 |
Не нахожусь, где пристроить мучающий вопрос...
Поиск дал только этот, так что рискну завести отдельный топик. Вопрос в следующим - есть необходмость создать маленький-быстрый скрипт, отдающий содержимое некоторого файла. Маленький-быстрый, в частности, основано на том, что запускать его будут часто-часто. При тестировании решения задачки на PHP и С с удивлением обнаружил, что сервер выдерживает в разы больше обращений к PHP скрипту. Причина: запускаемый CGI скрипт, написанный на C, съедает на одну запущенную копию больше метра памяти. Соответсвенно после 1000 запущенных копий система начинает сомневаться - а надо ли оно ей. Вобщем вопрос очень простой - как же сделать ДЕЙСТВИТЕЛЬНО маленький скриптик на С, такой, который не будет для вывода "Hello world" резервировать 1мб памяти? |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 45 Всего: 134 |
CGI? Когда я слышал про него в последний раз[это было давно], это значило не очень быстрый и черти знает сколько ресурсов жрущий запуск одного процесса на обработку каждого запроса. Если это ещё соответствует действительности, то задача практически неразрешима.
В голову приходит игра со всеми настройками компилятора, и смена компилятора если int main(){puts("helloworld");} жрёт много памяти. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
Axxent |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 25.3.2004 Где: Новосибирск Репутация: 2 Всего: 5 |
Может проще демона написать?
|
|||
|
||||
Farik |
|
||||||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 1.2.2005 Репутация: нет Всего: 1 |
Да процесс запускается отдельно для каждого запроса(если не использовать FastCGI). Но если мы говорим о "hello world", то неужели нет возможности соответсвенно _этой_ задаче использовать ресурсы? Если нам _не_ нужен весь комплекс возможностей не-CGI запуска какого либо интерпритируемого языка, то почему мы не можем использовать отдельный, лёгкий процесс?
Настройки у компилятора нашёл только -Ox и иже с ними, но они не оптимизируют используемую память, насколько я понял, только код. Попробовал gcc, mingw32-gcc, watcom. Результат вобщем то идентичный - разница максимум 40кб, при общем объёме занимаемой процессом памяти под два метра.
Задача к сожалению не того масштаба и применимости. При желании можно и сервер свой написать, но тут задача - сделать скрипт, который запускается на любой системе, без дополнительных операций с ОС, перекомпиляций Апача и тд. |
||||||
|
|||||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
отказаться от RTL и использовать исключительно native-subsystem API. Всё остальное в любом случае принесет некий перерасход. |
|||
|
||||
Farik |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 1.2.2005 Репутация: нет Всего: 1 |
Как это сделать? Конкретно интересно как это сделать на примере кода
начиная с которого начинается использование более 1мб памяти... |
||||
|
|||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 51 Всего: 70 |
||||
|
||||
witex |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 224 Регистрация: 16.10.2006 Где: Эстония Репутация: 0 Всего: 4 |
не знаю в чём проблема используй FastCGI, он покрайне мере счас на всех хостингах стоит нормальных
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. |
|||
|
||||
Farik |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 1.2.2005 Репутация: нет Всего: 1 |
Клиент в большинстве случае пользуется тем хостингом, которым пользуется, выбор уже сделан до текущей задачи. В 90% случаев если на хостинге нет FastCGI - то его и не поставят, не барское дело. Объяснять клиенту, что ему это действительно надо, потом ещё хостеров домогаться - удовольствие то ещё. Кроме того, это не совсем по теме данного форума: хотелось бы найти решение задачи, не выходящее за пределы логичного(пропорционального) использования памяти процессом.
Чувствую подвох в вопросе 8) Воззвал к шамбале, три раза с бубном вокруг рабочего места, потом запускаю божественный ТаскМанагер. Должна быть какая то другая последовательность, где можно посмотреть на реальность без мистических ритуалов? 8) |
||||
|
|||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Касаемо Buider'a
Если посмотреть в настройки линкера в проекте, то там отводится достаточно много памяти под стек и под кучу. Может быть с ними маленько поиграться? Наверняка ведь память под процесс согласно этим настройкам выделяется. |
|||
|
||||
Axxent |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 223 Регистрация: 25.3.2004 Где: Новосибирск Репутация: 2 Всего: 5 |
М. Я б тогда сказал - а при чем тут тогда С++? Если не апач перекомпилировать под абстрактную "любую систему", так уж сам модуль точно. Perl, php, python - не? |
|||
|
||||
Farik |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 49 Регистрация: 1.2.2005 Репутация: нет Всего: 1 |
это я к гипотетической возможности сделать демон. Написать демон под под юникс и сервис под винду это задача существенно более сложная(в том числе и уговорами администрации хостинга запуска этого демона), чем компилирование(прямо на сервере) кода в 30 строчек, которое необходимо для решения данной задачи. Из пушки по воробьям вобщем.
Тут WinAPI вообще не используется, как и GUI, поэтому подключать Builder к решению задачи вместо голых компиляторов - смысла не вижу. Кроме продуктивность написания кросс-платформенного кода в Builder мне кажется сомнительной... Как вобщем то правильно заметил Daevaorn, хотелось бы сначала понять, что и как выделяется на каждый процесс и правда ли что 1к процессов будут кушать 1мб*1000 реальной памяти, или же это какая то псевдофикция у ТаскМанагера. |
||||
|
|||||
Anikmar |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2513 Регистрация: 26.11.2006 Где: Санкт-Петербург Репутация: 9 Всего: 59 |
Билдер я привел как пример. Просто в конкретном случае тоже есть настройки по выделению памяти процессу, они я так понял, настраиваются на этапе линковки. Размер выделяемой для процесса памяти в Билдере с помощью настроек линкера меняется в меньшую сторону. По умолчанию он выделяет 0х1000 под стек и 0х2000 под кучу. Я думаю это все отражается на размере выделенной памяти под процесс. Хотя может я и не прав - чисто умозрительное заключение. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++:Общие вопросы" | |
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |