Message 1 of 12
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I noticed that my lisp routines in Acad2024 are much slower than in Acad2020. The problem seems to be in the Write-line function. I tested the code below in both AutoCAD versions and the results are shocking: Acad2000 in 0.5sec and Acad2024 in 41sec. Does anyone know why?
(defun c:performancetest ( / count loc tempfile times)
(vl-load-com)
(prompt (ver))
(setq count 0)
(if (setq tempfile (open (setq loc (vl-filename-mktemp "test.csv")) "w"))
(progn
(setq times (getvar "millisecs"))
(while (< count 100001)
(write-line (strcat "data;" (itoa count)) tempfile)
(if (member count (list 5000 10000 15000 20000 25000 30000 35000 40000 45000 50000 55000 60000 65000 70000 75000 80000 85000 90000 95000 100000))
(prompt (strcat "\nSplit time " (itoa count) " = " (rtos (* (- (getvar "millisecs") times) 0.001) 2 3) " sec. "))
)
(setq count (+ 1 count))
)
(close tempfile)
)
)
;;(openfile (findfile loc))
(princ)
)
Output 2020
Command: PERFORMANCETEST
Visual LISP 2020 (en)
Split time 5000 = 0.047 sec.
Split time 10000 = 0.063 sec.
Split time 15000 = 0.094 sec.
Split time 20000 = 0.109 sec.
Split time 25000 = 0.141 sec.
Split time 30000 = 0.172 sec.
Split time 35000 = 0.188 sec.
Split time 40000 = 0.203 sec.
Split time 45000 = 0.234 sec.
Split time 50000 = 0.250 sec.
Split time 55000 = 0.297 sec.
Split time 60000 = 0.313 sec.
Split time 65000 = 0.344 sec.
Split time 70000 = 0.359 sec.
Split time 75000 = 0.375 sec.
Split time 80000 = 0.406 sec.
Split time 85000 = 0.422 sec.
Split time 90000 = 0.453 sec.
Split time 95000 = 0.469 sec.
Split time 100000 = 0.500 sec.
Output 2024
Command: PERFORMANCETEST
Visual LISP 2024 (en)
Split time 5000 = 0.078 sec.
Split time 10000 = 0.234 sec.
Split time 15000 = 0.500 sec.
Split time 20000 = 0.844 sec.
Split time 25000 = 1.281 sec.
Split time 30000 = 1.828 sec.
Split time 35000 = 2.484 sec.
Split time 40000 = 3.250 sec.
Split time 45000 = 4.266 sec.
Split time 50000 = 6.484 sec.
Split time 55000 = 8.922 sec.
Split time 60000 = 11.562 sec.
Split time 65000 = 14.437 sec.
Split time 70000 = 17.516 sec.
Split time 75000 = 20.875 sec.
Split time 80000 = 24.422 sec.
Split time 85000 = 28.219 sec.
Split time 90000 = 32.266 sec.
Split time 95000 = 36.531 sec.
Split time 100000 = 40.984 sec.
Solved! Go to Solution.