mirror of
				https://github.com/janet-lang/janet
				synced 2025-10-31 07:33:01 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			31 lines
		
	
	
		
			856 B
		
	
	
	
		
			Janet
		
	
	
	
	
	
			
		
		
	
	
			31 lines
		
	
	
		
			856 B
		
	
	
	
		
			Janet
		
	
	
	
	
	
| (defn init-db [c]
 | |
|   (def res @{:clients @{}})
 | |
|   (var i 0)
 | |
|   (repeat c
 | |
|     (def n (string "client" i))
 | |
|     (put-in res [:clients n] @{:name n :projects @{}})
 | |
|     (++ i)
 | |
|     (repeat c
 | |
|       (def pn (string "project" i))
 | |
|       (put-in res [:clients n :projects pn] @{:name pn})
 | |
|       (++ i)
 | |
|       (repeat c
 | |
|         (def tn (string "task" i))
 | |
|         (put-in res [:clients n :projects pn :tasks tn] @{:name pn})
 | |
|         (++ i))))
 | |
|   res)
 | |
| 
 | |
| (loop [c :range [30 80 1]]
 | |
|   (var s (os/clock))
 | |
|   (print "Marshal DB with " c " clients, "
 | |
|          (* c c) " projects and "
 | |
|          (* c c c) " tasks. "
 | |
|          "Total " (+ (* c c c) (* c c) c) " tables")
 | |
|   (def buf (marshal (init-db c) @{} @""))
 | |
|   (print "Buffer is " (length buf) " bytes")
 | |
|   (print "Duration " (- (os/clock) s))
 | |
|   (set s (os/clock))
 | |
|   (gccollect)
 | |
|   (print "Collected garbage in " (- (os/clock) s)))
 | |
| 
 | 
