История изменений
Исправление cab, (текущая версия) :
emacs lisp
(require 'cl-lib)
(defun sumfirst (n)
(let ((s 0))
(cl-do ((i 0 (+ i 1)))
((> i n) s)
(setf s (+ s i)))))
(print (sumfirst 10000000))
python
def sumfirst(n):
i = 0
res = 0
while i < n:
res += i
i += 1
return res
print(sumfirst(10000000))
запускаем
~ $ /usr/bin/time -f %e emacs --script sumfirst.el
50000005000000
2.00
~ $ emacs --batch --eval '(byte-compile-file "sumfirst.el")'
#Скомпилированная версия выдает совсем другой результат
~ $ /usr/bin/time -f %e emacs --script sumfirst.elc
50000005000000
0.41
~ $ /usr/bin/time -f %e python2 sumfirst.py
49999995000000
0.4
~ $ /usr/bin/time -f %e python3 sumfirst.py
49999995000000
0.73
Исходная версия cab, :
emacs lisp
(require 'cl-lib)
(defun sumfirst (n)
(let ((s 0))
(cl-do ((i 0 (+ i 1)))
((> i n) s)
(setf s (+ s i)))))
(print (sumfirst 10000000))
python
def sumfirst(n):
i = 0
res = 0
while i < n:
res += i
i += 1
return res
print(sumfirst(10000000))
запускаем
~ $ /usr/bin/time -f %e emacs --script sumfirst.el
50000005000000
2.00
~ $ emacs --batch --eval '(byte-compile-file "sumfirst.el")'
#Скомпилированная версия выдает совсем другой результат
~ $ /usr/bin/time -f %e emacs --script sumfirst.elc
50000005000000
0.41
~ $ /usr/bin/time -f %e python3 sumfirst.py
49999995000000
0.73