[RndTbl] Benchmark times for the python language.
Tim Lavoie
tlavoie at acm.org
Thu Apr 10 02:27:05 CDT 2003
>>>>> "Ihor" == Ihor Jakowec <ihor at autobahn.mb.ca> writes:
Ihor> During last night's meeting a question was raised about
Ihor> benchmarks for the python language, or how fast it is
Ihor> relative to other computer languages. Since I am a computer
Ihor> language buff, I will attempt to give a more informative
Ihor> answer to this question, (to augment and correct my
Ihor> utterance of last evening).
Just for fun, I re-coded your Python version as Common Lisp, and ran
the basic C and Python-only versions for comparison. Note that if you
grok the syntax OK, the Lisp one is about as concise and legible as
the Python, or at least, not nearly as painful to read as the
C. Quicker to write too, I bet. <grin>
By the way, your benchmark is about as Python-unfriendly as it could
be, being calculation-intensive with lots of function calls. Many
real-world apps easily fall into the "fast enough" category with
little work.
Anyway, here's the code and times on my system. Oh yeah, I just dumped
it out to standard output, so I'd add a couple lines for real file
output.
Cheers,
Tim
;;;;;;;;;;;;;; table.lisp, using SBCL ;;;;;;;;;;;;;;;;;;;;;
(defun hstry (hs)
(let ((length 0)
(height hs))
(loop while (> hs 1) do
(if (= (mod hs 2) 0)
(setf hs (/ hs 2))
(progn
(setf hs (+ (* 3 hs) 1))
(if (> hs height)
(setf height hs))))
(setf length (1+ length)))
(values length height)))
(defun hsdisp (maxTry)
(let ((hs 0)
(hsMaxLength 0)
(hsMaxHeight 0)
(hsML '())
(hsMH '()))
(loop while (< hs maxtry) do
(setf hs (1+ hs))
(multiple-value-bind (l h) (hstry hs)
(if (> l hsMaxLength)
(progn
(setf hsMaxLength l)
(push (list hs hsMaxLength) hsML)))
(if (> h hsMaxHeight)
(progn
(setf hsMaxHeight h)
(push (list hs hsMaxHeight) hsMH)))))
(format t "~10,A ~10,A~%" "hs" "length maxima")
(dolist (x (reverse hsML))
(format t "~{~10,d ~}~%" x))
(format t "~%~%~10,A ~10,A~%" "hs" "height maxima")
(dolist (x (reverse hsMH))
(format t "~{~10,d ~}~%" x))
))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
C: table.c
real 0m0.134s
user 0m0.128s
sys 0m0.002s
python2.2: table.py
real 0m21.171s
user 0m20.237s
sys 0m0.022s
python2.3: table.py
real 0m15.826s
user 0m14.756s
sys 0m0.021s
sbcl: table.lisp
real 0m2.868s
user 0m2.259s
sys 0m0.001s
More information about the Roundtable
mailing list