File: partest.l

package info (click to toggle)
euslisp 9.27%2Bdfsg-7
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye
  • size: 55,344 kB
  • sloc: ansic: 41,162; lisp: 3,339; makefile: 256; sh: 208; asm: 138; python: 53
file content (53 lines) | stat: -rw-r--r-- 1,527 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
(defun cids ()
  (dolist (x (sys:list-all-classes))
      (format t "~s ~d~%" (send x :name)
      (send x :cid))))

(sys:make-thread 8)
;(load "l/par.l")
(thr-setconcurrency 8)

(defun cubes (n)
   (dotimes (i n)
	   (let ((c (make-cube 500 400 300)))
;	       (send c :rotate 0.1 :x)
;	       (send c :translate #f(10 20 30))
       c)))

(setq c1 (make-cube 500 400 300))
(setq c2 (make-cylinder 100 100))
(send c2 :translate #f(200 150 100))
(defun intck (n ) (dotimes (i n) (send c1 :intersectp c2)))

 (setq *debug* t)

(defun itest (con)
   (let ((gtime (sys:gctime)) (rtime (runtime)) threads newgc)
      (dotimes (i con) (push (afuncall 'cubes 100) threads))
	(warn "fork done ~d ~s~%" con threads)
      (dolist (thr threads) (wait-afuncall thr))
      (setq newgc (sys:gctime))
      (format t "concurrency=~d runtime=~s sec gc=~d ~d ~%"
	 con (- (runtime) rtime) (- (car newgc) (car gtime))
	 (+ (- (cadr newgc) (cadr gtime)) (- (caddr newgc) (caddr gtime))))))


(setq *fork-n* 20)

(defun parfib (n)
   (cond ((< n 2) n)
	 ((< n *fork-n*) (+ (parfib (- n 2)) (parfib (1- n))))
	 (t (let (a b)
		(setq a (thread 'parfib (- n 2))
		      b (thread 'parfib (1- n)))
	        (+ (sys:wait-thread a) (sys:wait-thread b))))))

(defun parfib-test (n)
  (let (start end sec usec r)
     (setq start (unix::gettimeofday))
     (setq r (parfib n))
     (setq end (unix::gettimeofday))
     (setq sec (- (car end) (car start))
	   usec (- (cadr end) (cadr start)))
     (print r)
     (/ (+ (* sec 1000000) usec) 1000.0)))