как такое может быть ???

Тема в разделе "WASM.HEAP", создана пользователем nekrodaemon, 16 июл 2008.

  1. nekrodaemon

    nekrodaemon New Member

    Публикаций:
    0
    Регистрация:
    16 июл 2008
    Сообщения:
    22
    привет.

    скажите, как такое может быть: я написал свой простейший интерпретируемый ЯП.
    скармливаем ему сорец:
    Код (Text):
    1. int  main()
    2. { int cnt = 0;
    3.  
    4.   while(cnt<1000000000){ ##миллиард итераций
    5.    cnt+=1;
    6.   }
    7.  
    8.   print(cnt);
    9.   return 0;
    10. }
    запускаем, смотрим время исполнения (я в линуксах):
    теперь пишем то же самое на руби, питоне и перле по-порядку и смотрим результаты:
    Код (Text):
    1. //ruby
    2. i=0
    3. while (i<1000000000)
    4.   i+=1;
    5. end
    6. puts i;
    Код (Text):
    1. //питон
    2. q=0
    3. while q<1000000000:
    4.   q+=1
    5.  
    6. print q
    Код (Text):
    1. //перл
    2. $i=0;
    3. while ($i<1000000000){ ++$i;}
    4.  
    5. print($i);
    как так?? моя наипростейшая реализация интерпретируемого языка (я не компилирую в байт-код, не делаю никаких оптимизаций, кеширований итд.) проигрывает только перлу?
     
  2. satrau

    satrau Александр

    Публикаций:
    0
    Регистрация:
    5 янв 2008
    Сообщения:
    229
    а что, возможностей в твоем языке столько же сколько например в питоне или перле?
    Бестрее твой яву может быть только изза того что он ничего не проверяет и ничего не может кроме простейших операций.
     
  3. katrus

    katrus New Member

    Публикаций:
    0
    Регистрация:
    7 мар 2007
    Сообщения:
    612
    nekrodaemon
    Вы сравниваете яблоки с конфетами. Вот когда Ваш интерпретатор будет по возможностям как ruby тогда и сравним. Простейший пример - в ruby целые чилса реализованны как ruby классы (большая часть ruby написанна на самом ruby). А в Вашем интерпретаторе как реализованны целые числа? DWORD?