Донат На хостинг |
ISK за переводы до 75kk за 1000зн. |
Хроники EVE Сборник |
Новичкам Полезная информация |
Stackless Python 2.7
#42
Отправлено 13 December 2011 - 17:13
Обратитите внимание на некропостинг.Обратите внимание, что здесь не учитывается время затраченное на загрузку python интерпретатора. Теоретически при запущенном приложении данный код отработает гораздо быстрее чем при полном запуске. И пример кода слишком прост чтобы протестировать скорость работы реального приложения. Так что однозначные выводы из этого теста всё равно не сделать.
Кроме того, всякие операции с кучей итераций ANSI C действительно делает много быстрее, чем питон, так что пример несколько синтетический.
There is a place where the black stars hang
and the strangest eons call that amorphous mass
unknown, immense, ambivalent to all
#44
Отправлено 13 December 2011 - 20:44
2. Черт, и ведь действительно некропостинг.
Сообщение отредактировал Zyamilon: 13 December 2011 - 20:47
Если у вас есть корабль и он имеет возможность установки орудий и вы хотите с помощью них убивать - вы уже исповедуете религию Темных Вуду, но еще не знаете об этом.
#45
Отправлено 13 December 2011 - 21:39
Python:
i = 0while (i < 1000000): print i i = i + 1
С:#include <stdio.h>int main (){int i;for(i = 0; i < 1000000; i++) printf ("%d\n", i);return 0;}
Итак кто же быстрей сделает эту однотипную операцию, я специально вывожу вывод в /dev/null что бы тест не зависел от фазы луны. Принтскрин с результатами в аттаче. Так что С считает на начале слово раз, а питон, на раз-два-три
С сделает быстрее...
Объясняю почему...
С создаст одну переменную i... и распечатает её 1000000 раз с разынми значениями...
Питон же.
а) будет интерпретировать команды каждый раз на ходу, то есть питон не делает компиляции в машинный код вообще никогда. (откомпиленный питонский код это фактически только прогнанный парсером, но это всё равно зашифрованные команды питона а не машинный код)
б) будет создавать миллион раз объекты соответствующие разным числам от 1 до миллиона.
Команда
i = i + 1
в питоне делает следующее:
создаётся объект хранящий соответсвующий значению i+1, и дальше идентефикатор i переписывается так чтобы он ссылался на новый объект.
то есть если ты напишешь в питоне следующее:
i = 1000i = i + 1
то он сделает следующее:
создаст объект соответвующий числу 1000. Сделает так что i будет ссылаться на этот объект.
Потом когда увидит команду (i + 1) загрузит объект по ссылке i увидит что там 1000, загрузит объект соответвующий числу 1, вызовет метод сооветствующий оператору +, получит третий объект соответствующий числу 1001, запишет ссылку на этот объект в i.
(Питон конечно только иммитирует подобное поведение и на самом деле работает эффективнее, но даже иммитация подобного эффекта требует затраты процессорных мощностей лишних)
в то время как C для этой операции всего лишь сделает несколько обычных машинных операций (создание константы, запись в адрес, чтение с адреса, создание константы, сложение, и запись в адрес)
Сообщение отредактировал Trimutius III: 13 December 2011 - 21:48
0 посетителей читают тему
0 members, 0 guests, 0 anonymous users