пятница, 15 июля 2011 г.

Первый бой

Священная война начинается со спора, в споре рождается истина, спор перерастает во флейм, истина замещается всякой ложью. И это забавно. А теперь добавим забаве абсурда. Это абсурдный тест заимствованный от сюда http://habrahabr.ru/blogs/programming/120090/ 
Результаты указаны в миллисекундах, кроме тех где указано иное.


Среда
CPU: Intel(R) Pentium(R) CPU G6950 @ 2.80ГГц

ОС: Debian 6.0.2 (x86)



JAVA
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Запуск из Eclipse Helios

public class MathTest{
  public static void main (String[] args){
    for (int i =0; i < 5; i++)
      test ();
    }
  static public void test (){
    long s = System.currentTimeMillis();
    int cout = 100000000;
    for (int i = 0; i < cout; ++i){
      int x = i / 10;
    }
    long e = System.currentTimeMillis();
    System.out.println (e-s);
  }
}


результат:
5
1
0
0
0



C++
g++ (Debian 4.4.5-8) 4.4.5

запуск:
> g++ testcpp.cpp
> a.out

#include <sys/time.h>
#include <stdio.h>
#include <unistd.h>
void test ()
{
  struct timeval start, end;
  long mtime, seconds, useconds;
  gettimeofday(&start, NULL);
  int count = 100000000;
  for (int i=0; i < count; ++i)
    int x = i/10;
  gettimeofday(&end, NULL);
  seconds = end.tv_sec - start.tv_sec;
  useconds = end.tv_usec - start.tv_usec;
  mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5;
  printf("%ld\n", mtime);
}
int main (void)
{
  for (int i=0; i < 5; i++)
    test ();
}

результат:
321
316
317
324
314



C
gcc (Debian 4.4.5-8) 4.4.5


запуск:
> gcc testc.cpp
> a.out

#include <sys/time.h>
#include <stdio.h>
#include <unistd.h>
void test ()
{
  struct timeval start, end;
  long mtime, seconds, useconds;
  int count, i, x;
  gettimeofday(&start, NULL);
  count = 100000000;
  for (i=0; i < count; ++i)
    x = i/10;
  gettimeofday(&end, NULL);
  seconds = end.tv_sec - start.tv_sec;
  useconds = end.tv_usec - start.tv_usec;
  mtime = ((seconds) * 1000 + useconds/1000.0) + 0.5;
  printf("%ld\n", mtime);
}
int main (void)
{
  int i;
  for (i=0; i < 5; i++)
    test ();
}

результат:
318
284
281
287
281



PHP
PHP 5.3.3-7+squeeze3 with Suhosin-Patch (cli) (built: Jun 28 2011 13:13:26)


запуск:
> php -f testphp.php

<?php
  for($i = 0; $i < 5; $i++)
    test ();
  function test ()
  {
    $s = microtime (true);
    $count = 100000000;
    for ($i=0; $i<$count; ++$i)
      $x = $i / 10;
    $e = microtime (true);
    echo ($e-$s) . "\n";
}
?>

результат (секунды):
25.652865171432
25.643960952759
26.877197980881
27.133295059204
25.590247154236



ActionScript 3
Linux Flash Player 10.3 Projector (10.3.181.34)


запуск:
> mxmlc testflex.mxml
> flashplayer testflex.swf

mxmlc Version 4.5.1 build 21328
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="
http://www.adobe.com/2006/mxml" layout="absolute"
width="300" height="300" initialize="main()" backgroundAlpha="0">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
public function main():void
{
  for (var i:Number=0; i < 5; i++)
    test();
}
public function test():void
{
  var s : Number = new Date ().time;
  var count: Number = 100000000;
  for (var i:Number =0; i < count; ++i)
    var x: Number = i/ 10;
  var e: Number = new Date ().time;
  var r :Number = e-s;
  Alert.show (String(r));
}
]]>
</mx:Script>
</mx:Application>


результат:
393
424
419
393
404



JavaScript

запуск:
Открыть файл\testjs.html

<script>
for (var t=0; t<5;t++)
  test ();
function test ()
{
  var s = new Date ().getTime();
  var count = 100000000;
  for (var i=0; i< count; ++i)
    var x = i/10;
  var e = new Date().getTime();
  document.write ((e-s));
  document.write("<br>");
}
</script>

результаты по браузерам:
Firefox 5.0
963
972
984
946
948


Opera 11.50
993
982
996
989
973


Google Chrome 12.0.742.124
897
894
894
894
894



// Нетрадиционные извращения

Firefox 3.6.13
7621
7596
7588
7586
7598


PlayOnLinux Internet Explorer 7
завис



// Вне. Замеры любезно предоставленные
Python

результат (секунды):
35


P.S. Обожаю php и js в браузерах,

Комментариев нет:

Отправить комментарий