Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Объём занимаемой памяти, CGI, hello world? 
:(
    Опции темы
Farik
Дата 13.1.2007, 17:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.2.2005

Репутация: нет
Всего: 1



Не нахожусь, где пристроить мучающий вопрос...
Поиск дал только этот, так что рискну завести отдельный топик.

Вопрос в следующим - есть необходмость создать маленький-быстрый скрипт, отдающий содержимое некоторого файла.
Маленький-быстрый, в частности, основано на том, что запускать его будут часто-часто.

При тестировании решения задачки на PHP и С с удивлением обнаружил, что сервер выдерживает в разы больше обращений к PHP скрипту.
Причина: запускаемый CGI скрипт, написанный на C, съедает на одну запущенную копию больше метра памяти. Соответсвенно после 1000 запущенных копий система начинает сомневаться - а надо ли оно ей.

Вобщем вопрос очень простой - как же сделать ДЕЙСТВИТЕЛЬНО маленький скриптик на С, такой, который не будет для вывода "Hello world" резервировать 1мб памяти?
PM MAIL   Вверх
Mayk
Дата 13.1.2007, 20:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


^аВаТаР^ сообщение>>
****


Профиль
Группа: Участник
Сообщений: 2616
Регистрация: 22.5.2005
Где: за границей разум а

Репутация: 45
Всего: 134



CGI? Когда я слышал про него в последний раз[это было давно], это значило не очень быстрый и черти знает сколько ресурсов жрущий запуск одного процесса на обработку каждого запроса. Если это ещё соответствует действительности, то задача практически неразрешима.

Цитата(Farik @  13.1.2007,  21:28 Найти цитируемый пост)
Вобщем вопрос очень простой - как же сделать ДЕЙСТВИТЕЛЬНО маленький скриптик на С, такой, который не будет для вывода "Hello world" резервировать 1мб памяти? 

В голову приходит игра со всеми настройками компилятора, и смена компилятора если int main(){puts("helloworld");} жрёт много памяти.


--------------------
 Здесь был кролик. Но его убили.
Человеки < кроликов, йа считаю.
PM MAIL WWW ICQ   Вверх
Axxent
Дата 13.1.2007, 20:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 2
Всего: 5



Может проще демона написать?
PM MAIL ICQ   Вверх
Farik
Дата 14.1.2007, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.2.2005

Репутация: нет
Всего: 1



Цитата
CGI? Когда я слышал про него в последний раз[это было давно], это значило не очень быстрый и черти знает сколько ресурсов жрущий запуск одного процесса на обработку каждого запроса. Если это ещё соответствует действительности, то задача практически неразрешима.

Да процесс запускается отдельно для каждого запроса(если не использовать FastCGI). 
Но если мы говорим о "hello world", то неужели нет возможности соответсвенно _этой_ задаче использовать ресурсы? 
Если нам _не_ нужен весь комплекс возможностей не-CGI запуска какого либо интерпритируемого языка, то почему мы не можем использовать отдельный, лёгкий процесс?

Цитата
В голову приходит игра со всеми настройками компилятора, и смена компилятора если int main(){puts("helloworld");} жрёт много памяти.

Настройки у компилятора нашёл только -Ox и иже с ними, но они не оптимизируют используемую память, насколько я понял, только код.

Попробовал gcc, mingw32-gcc, watcom. Результат вобщем то идентичный - разница максимум 40кб, при общем объёме занимаемой процессом памяти под два метра.


Цитата
Может проще демона написать?

Задача к сожалению не того масштаба и применимости. При желании можно и сервер свой написать, но тут задача - сделать скрипт, который запускается на любой системе, без дополнительных операций с ОС, перекомпиляций Апача и тд.
PM MAIL   Вверх
Daevaorn
Дата 14.1.2007, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Farik @  13.1.2007,  18:28 Найти цитируемый пост)
Вобщем вопрос очень простой - как же сделать ДЕЙСТВИТЕЛЬНО маленький скриптик на С, такой, который не будет для вывода "Hello world" резервировать 1мб памяти? 

отказаться от RTL и использовать исключительно native-subsystem API. Всё остальное в любом случае принесет некий перерасход.
PM MAIL WWW   Вверх
Farik
Дата 14.1.2007, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.2.2005

Репутация: нет
Всего: 1



Цитата

отказаться от RTL и использовать исключительно native-subsystem API. Всё остальное в любом случае принесет некий перерасход.


Как это сделать?
Конкретно интересно как это сделать на примере кода 
Код

main(){
  puts("helloworld");
}

начиная с которого начинается использование более 1мб памяти...
PM MAIL   Вверх
Daevaorn
Дата 15.1.2007, 01:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 51
Всего: 70



Цитата(Farik @  15.1.2007,  00:21 Найти цитируемый пост)
начиная с которого начинается использование более 1мб памяти... 

как ты это определил?
PM MAIL WWW   Вверх
witex
Дата 15.1.2007, 03:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 16.10.2006
Где: Эстония

Репутация: 0
Всего: 4



не знаю в чём проблема используй FastCGI, он покрайне мере счас на всех хостингах стоит нормальных
--------------------
Я не волшебник, я только учусь."Шлёпни в Гугл" - Афтор Былов Ю.М. 
PM MAIL   Вверх
Farik
Дата 15.1.2007, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.2.2005

Репутация: нет
Всего: 1



Цитата
не знаю в чём проблема используй FastCGI, он покрайне мере счас на всех хостингах стоит нормальных

Клиент в большинстве случае пользуется тем хостингом, которым пользуется, выбор уже сделан до текущей задачи.
В 90% случаев если на хостинге нет FastCGI - то его и не поставят, не барское дело.
Объяснять клиенту, что ему это действительно надо, потом ещё хостеров домогаться - удовольствие то ещё.
Кроме того, это не совсем по теме данного форума: хотелось бы найти решение задачи, не выходящее за пределы логичного(пропорционального) использования памяти процессом.



Цитата
как ты это определил?

Чувствую подвох в вопросе 8)
Воззвал к шамбале, три раза с бубном вокруг рабочего места, потом запускаю божественный ТаскМанагер.
Должна быть какая то другая последовательность, где можно посмотреть на реальность без мистических ритуалов? 8)
PM MAIL   Вверх
Anikmar
Дата 15.1.2007, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Касаемо Buider'a

Если посмотреть в настройки линкера в проекте, то там отводится достаточно много памяти под стек и под кучу. Может быть с ними маленько поиграться? Наверняка ведь память под процесс согласно этим настройкам выделяется.
PM MAIL ICQ   Вверх
Axxent
Дата 15.1.2007, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 223
Регистрация: 25.3.2004
Где: Новосибирск

Репутация: 2
Всего: 5



Цитата

тут задача - сделать скрипт, который запускается на любой системе, без дополнительных операций с ОС, перекомпиляций Апача и тд.

М. Я б тогда сказал - а при чем тут тогда С++? Если не апач перекомпилировать под абстрактную "любую систему", так уж сам модуль точно. Perl, php, python - не?
PM MAIL ICQ   Вверх
Farik
Дата 15.1.2007, 12:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 49
Регистрация: 1.2.2005

Репутация: нет
Всего: 1



Цитата
М. Я б тогда сказал - а при чем тут тогда С++? Если не апач перекомпилировать под абстрактную "любую систему", так уж сам модуль точно. Perl, php, python - не?

это я к гипотетической возможности сделать демон. 
Написать демон под под юникс и сервис под винду это задача существенно более сложная(в том числе и уговорами администрации хостинга запуска этого демона), чем компилирование(прямо на сервере) кода в 30 строчек, которое необходимо для решения данной задачи. Из пушки по воробьям вобщем.


Цитата

Касаемо Buider'a

Если посмотреть в настройки линкера в проекте, то там отводится достаточно много памяти под стек и под кучу. Может быть с ними маленько поиграться? Наверняка ведь память под процесс согласно этим настройкам выделяется.

Тут WinAPI вообще не используется, как и GUI, поэтому подключать Builder к решению задачи вместо голых компиляторов - смысла не вижу. Кроме продуктивность написания кросс-платформенного кода в Builder мне кажется сомнительной...


Как вобщем то правильно заметил Daevaorn, хотелось бы сначала понять, что и как выделяется на каждый процесс и правда ли что 1к процессов будут кушать 1мб*1000 реальной памяти, или же это какая то псевдофикция у ТаскМанагера.

PM MAIL   Вверх
Anikmar
Дата 15.1.2007, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 9
Всего: 59



Цитата(Farik @  15.1.2007,  12:50 Найти цитируемый пост)
Тут WinAPI вообще не используется, как и GUI, поэтому подключать Builder к решению задачи вместо голых компиляторов - смысла не вижу. Кроме продуктивность написания кросс-платформенного кода в Builder мне кажется сомнительной...


Билдер я привел как пример.
Просто в конкретном случае тоже есть настройки по выделению памяти процессу, они я так понял, настраиваются на этапе линковки. Размер выделяемой для процесса памяти в Билдере с помощью настроек линкера меняется в меньшую сторону. По умолчанию он выделяет 0х1000 под стек и 0х2000 под кучу. Я думаю это все отражается на размере выделенной памяти под процесс.

Хотя может я и не прав - чисто умозрительное заключение.
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0933 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.