LINUX.ORG.RU

История изменений

Исправление 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