Стоит ли компилировать программу на C и запускать ее вместо страницы PHP? - PullRequest
3 голосов
/ 16 мая 2009

кажется, что большую часть времени набираемая скорость не стоит - так ли это? в противном случае многие люди сделают это для своей самой популярной страницы. Есть ли реальная польза от использования программы на Си? Я могу вспомнить случай, когда это не важно: когда узкое место в сети на сервере намного больше, чем узкое место в ЦП, тогда скорость выполнения программы становится менее важной.

Ответы [ 7 ]

8 голосов
/ 16 мая 2009

C - отличный язык. Но он был разработан для программирования системного уровня, а не для создания веб-страниц. PHP, с другой стороны, был разработан для создания веб-страниц. Используйте правильный инструмент для правильной работы. В этом случае PHP.

Также вы начинаете с ошибочной предпосылки. А именно, что PHP не будет достаточно быстрым для доставки содержимого страницы. Существует множество сайтов, которые просто не согласны с этим утверждением. Может быть, есть какой-то крайний случай, когда C - единственный выбор для работы, но я считаю крайне маловероятным, что вы столкнетесь с таким сценарием.

2 голосов
/ 16 мая 2009

Когда вы используете C в качестве молотка, все выглядит как большой палец.

Как сказал Джаред выше, используйте правильные инструменты. Вы могли бы сделать все это в C, многие имеют. Но скорость разработки PHP против C для Интернета - это то, на что вы тоже можете обратить внимание. Что-то, что довольно просто сделать в PHP (например, динамический массив), это не просто в C.

0 голосов
/ 16 мая 2009

Существует один сценарий (и во всех других случаях, о которых я могу подумать, ответ таков: оно того не стоит - хорошие ответы приводятся в других ответах).

Так что случай, когда

  • программе необходимо выполнить много обработки данных или вычислений
  • есть сильно оптимизированные коды C, доступные

Я бы сказал, что сложная система трассировки лучей является кандидатом в данной ситуации, но ничего сложного в этом нет.

Даже в этом случае я бы реализовал страницы в PHP и запустил фоновое задание, чтобы выполнить тяжелую работу.

0 голосов
/ 16 мая 2009

Если вам даже нужно задать вопрос, ответ - нет.

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

Если ваш код должен работать очень быстро, делая что-то довольно сложное в вычислительном отношении или требующее больших усилий, возможно, C может быть правильным ответом, но большинство веб-сайтов не такие.

Возможно, стоило бы иметь очень специфический код обработки или тяжелый код, переписанный в виде модулей C, как только будет определено, что текущая реализация слишком медленная, но эти оптимизации лучше всего выполнять в нужном направлении, с уверенностью зная реальные недостатки приложение.

Если у вас есть приличная библиотека или платформа, например .NET MVC, использование C # для обычного веб-разработчика вполне осуществимо. С, не так много.

0 голосов
/ 16 мая 2009

это действительно зависит от кода. Например, я бы предпочел скомпилировать код C, который работает с моим алгоритмом сетевого графа; однако я бы никогда не конвертировал простую статическую страницу, отображающую минимальный CSS.

0 голосов
/ 16 мая 2009

Я бы сказал, что даже в случае, который вы иллюстрировали, никогда не стоило бы перепроектировать работу на стороне сервера для запуска в качестве C-программы. Независимо от количества трафика.

Стоимость обновления вашего сервера или внедрения эффективного кэширования всегда будет меньше, чем работа, которая потребовалась бы для переписывания кода на стороне сервера для запуска в C.

0 голосов
/ 16 мая 2009

Большинство сайтов используют кэширование в памяти для высокой скорости отклика. В этом случае загрузка больше не происходит при создании страницы, поэтому я бы не стал использовать программу c.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...