LINUX.ORG.RU
ФорумTalks

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


0

0

От скуки провёл тест трёх скриптовых языков: PHP, Python, bash.

Код PHP:

<?php

$a = 2;
while ($a > 1) {
  $a = $a + 1;
  echo $a . "\n";
  echo '.....' . "\n";
}

?>

Код Python:

a = 2
while (a > 1):
  a = a + 1
  print a
  print '.....'

Код bash

a=2
while [ a > 1 ]
  do
    a=$(( $a + 1 ))
    echo $a
    echo '.....'
  done

Результаты:
1-е место: PHP (1337024 циклов за минуту)
2-е место: Python (1320338 циклов за минуту)
3-е место: bash (1195488 циклов за минуту)

Сдаётся мне, что тест бесполезный, как попугай в программировании. Или всё таки он показывает, что у PHP скорость stdout самая большая?

В общем вопрос: можно ли делать какие-либо выводы из этого теста?

★★★

Тебе непременно нужно устроиться на работу в phoronix, они постоянно такие тесты делают.

xetf ★★
()
Ответ на: комментарий от lazyklimm

я, кстати, узнал, откуда у тебя аватарка. Это замечательный мультик ))))

name_no ★★
()

> можно ли делать какие-либо выводы из этого теста?

Можно сколько угодно ковырять в носу и делать из этого выводы. Против такого твоего времяпровождения выступят только некоторые неадекваты с ЛОРа, не обращай на них внимания. В основном всем пофиг.

name_no ★★
()
Ответ на: комментарий от name_no

можно ли делать какие-либо выводы из этого теста?

Можно сколько угодно ковырять в носу и делать из этого выводы. Против такого твоего времяпровождения выступят только некоторые неадекваты с ЛОРа, не обращай на них внимания. В основном всем пофиг.

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

VirRaa ★★★
() автор топика

[1]> (defun fac (x) (if (= x 0) 1 (* x (fac (1- x)))))
FAC
[2]> (time (fac 400))
Real time: 8.99E-4 sec.
Run time: 0.0 sec.
Space: 71360 Bytes
64034522846623895262347970319503005850702583026002959458684445942802397169186831436278478647463264676294350575035856810848298162883517435228961988646802997937341654150838162426461
94235230704624432501511444867089066277391491811733195599644070954967134529047702032243491121079759328079510154537266725162787789000934976376571032635033153396534986838683133935202
43737881577867915063118587026182701698197400629830253085912983461622723045583395207596115053022360868104332972551948526744322324386699484224042325998055516106359423769613992319171
34063858996537970147827206606320217379472010321356624613809077942304597360699567595836096158715129913822286578579549361617654480453222007825818400848436415591229454275384803558374
518022675900061399560145595206127211192918105032491008000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
[3]>

Я умею считать факториал на лиспе!! Ура-ура! И ещё что-то умею

different_thing
()
Ответ на: комментарий от different_thing

итеративно быстрее будет

(time (fac-iter 1 400))

Evaluation took: 0.000 seconds of real time 0.000000 seconds of total run time (0.000000 user, 0.000000 system) 100.00% CPU 393,585 processor cycles 87,496 bytes consed

lazyklimm ★★★★★
()
Ответ на: комментарий от different_thing

он итеративно написал, а у тебя чисто рекурсия

lazyklimm ★★★★★
()
Ответ на: комментарий от name_no

> но все таки количество козявок в каждой ноздре разное.

Исправил. Продолжаю тонко намекать.

Ну значит, какой-то из носов более грязный.

VirRaa ★★★
() автор топика
Ответ на: комментарий от different_thing

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

RedPossum ★★★★★
()
Ответ на: комментарий от yoghurt

stack overflow не случается даже на факториале для 100 000, вот я и думал. спасибо

RedPossum ★★★★★
()

(setq y #'(lambda (f) (funcall f #'(lambda (x) (setq tmp (funcall y f)) (funcall tmp x)))))

(funcall (funcall y #'(lambda (x) (lambda (y) (if (= y 0) 1 (* y (funcall x (1- y))))))) 400)

Это я на хабре нашел. Называется Y-комбинатор. Позволяет делать рекурсию анонимных функций. Нравится же людям ломать себе голову)

different_thing
()
Ответ на: комментарий от RedPossum

Это почему? Очень неплохой язык, учитывает многие недостатки С++. Жаль, у него всего 2 реализации: в рамках платформ .NET и Mono. Было бы неплохо, если бы появился транслятор самого языка без привязки к каким-либо платформам.

PayableOnDeath
()
Ответ на: комментарий от lazyklimm

(time (FAC-ITER 1 100000))
Evaluation took:
11.153 seconds of real time
10.797358 seconds of total run time (10.243442 user, 0.553916 system)
[ Run times consist of 2.037 seconds GC time, and 8.761 seconds non-GC time. ]
96.81% CPU
28,251,355,578 processor cycles
9,931,715,368 bytes consed

кто меньше?

lazyklimm ★★★★★
()
Ответ на: комментарий от PayableOnDeath

.net реализация пугает меня своей, местами, «делфийностью», особенно в плане построения гуёв и ado.net. это первое впечатление, т.к. с# увидел только вчера за допилкой курсоча одному раздолбаю.

RedPossum ★★★★★
()
Ответ на: комментарий от RedPossum

> не надо писать на c#.

с# увидел только вчера за допилкой курсоча одному раздолбаю

это бесподобно!

obinos
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.