Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Скорость PHP, Visual C++, MatLab
Форумы портала PHP.SU » Разное » Прочее » Скорость PHP, Visual C++, MatLab

Страниц (1): [1]
 

1. Valimar - 04 Апреля, 2009 - 09:24:26 - перейти к сообщению
Нужно мне переписать одну простенькую программку на PHP, представляет она собой генерацию потока ошибок (имитация имеется ввиду) в каналах связи в зависимости от модели канала. Почему на PHP? Ну вот такая онлайн версия будет =) Генерирует и пишет в файл. А поговорить я хочу о скорости выполнения данного кода на разных языках. Меня удивило то, что PHP сделал и матлаб и VC++ (6). Я написал самый просток скриптик - это цикл, состоящий из миллион итераций и каждую итерацию он выводит на экран по одному символу.
PHP:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?
  3. include "start.php";
  4. $a = 0;
  5. while ($a<1000000) {
  6.         print "0\n";
  7.         $a++;
  8. }
  9. echo "<br /><br />" . $a; // чтобы убедиться, что цикл не прервался
  10. include "end.php";
  11. ?>
  12.  

Visual C++:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. int main(int argc, char* argv[])
  3. {
  4.         int a=0;
  5.         while (a<1000000) {
  6.                 printf("%c",'1');
  7.                 a++;
  8.         }
  9.         return 0;
  10. }
  11.  

и MatLab:
CODE (text):
скопировать код в буфер обмена
  1.  
  2. a = 0;
  3. tic;
  4. %profile on;
  5. while a<1000000
  6. disp('1');
  7. a = a+1;
  8. end
  9. %profile viewer
  10. toc
  11.  

Результат выполнения такой:
PHP - 0.8 сек (это время генерации страницы)
VC++ - 25 сек
MatLab - 18 сек
(Pentium 4 2600, 1024)
Конечно же, PHP для научно-исследовательских задач не подходит Улыбка , но почему не вариант что-то с его помощью вычислить/реализовать? Для работы с матрицами он не годиться, но всеми другими математическими функциями он обладает. А вы что думаете по этому поводу?
2. valenok - 04 Апреля, 2009 - 19:10:29 - перейти к сообщению
printf видимо в С++ медленно работает
кроме того php и с матрицами в пятой версии научился работать.
Ну а вообще просто в C++ некоторые вещи делать удобней.
А по скорости может это такая особенность VC++ по сравнению с С++
3. EuGen - 05 Апреля, 2009 - 14:31:15 - перейти к сообщению
Время исполнения инструкций по вычислению несоизмеримо мало по сравнению с затратами по выводу на экран, например.
Скорее всего, эти 25 секунд были потрачены именно на вывод.
Попробуйте еще раз без вывода на экран, уверен, PHP останется позади, ибо он - интерпретируемый язык.
4. Champion - 05 Апреля, 2009 - 15:17:30 - перейти к сообщению
Кроме выше сказанного, процесс вывода происходит по-разному:
-в PHP накапливается буфер, и после этого сбрасывается в браузер. Один раз.
-в VC вывод на экран происходит при каждом прохождении цикла.
Если в VC тоже сделать строчку, которую использовать в качестве буфера и вывести ее только после цикла, всё встанет на свои места)
А printf, он и в PHP вроде не блещет быстротой

 

Powered by ExBB FM 1.0 RC1