blob: 072af6d6872bcda9e178b1bb7d9c5e3fdbb3eed8 (
plain)
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
#lang racket
(require racket/match)
(require racket/list)
(require racket/file)
(require threading)
(require csv-reading)
(require csv-writing)
(define (parse-csv f)
(let* ([exec-csv (open-input-file f)]
[report (csv->list exec-csv)])
(close-input-port exec-csv)
report))
(define (nth lst idx)
(cond ((empty? lst) empty) ; more effiecent than (= (length lst) 0)
((= idx 0) (first lst))
(else (nth (rest lst) (- idx 1)))))
(define bambu-results (cdr (parse-csv "./data/bambu-area.csv")))
(define vericert-full-inlining (cdr (parse-csv "./data/vericert-full-inlining.csv")))
(define vericert-fun (cdr (parse-csv "./data/vericert-fun.csv")))
(define (get-row lst n)
(map (lambda (x) (string->number (nth x n))) lst))
(define (get-slice lst) (get-row lst 2))
(define (get-delay lst) (get-row lst 9))
(define (get-cycles lst) (get-row lst 10))
(define (get-relative lst1 lst2)
(for/list ([i lst1] [j lst2]) (/ i j)))
(define (mul-lists lst1 lst2) (for/list ([i lst1] [j lst2]) (* i j)))
(define slice-ratio-vericert-fun
(get-relative (get-slice vericert-fun) (get-slice bambu-results)))
(define slice-ratio-vericert-full-inlining
(get-relative (get-slice vericert-full-inlining) (get-slice bambu-results)))
(define time-ratio-vericert-fun
(get-relative (mul-lists (get-delay vericert-fun) (get-cycles vericert-fun))
(mul-lists (get-delay bambu-results) (get-cycles bambu-results))))
(define time-ratio-vericert-full-inlining
(get-relative (mul-lists (get-delay vericert-full-inlining) (get-cycles vericert-full-inlining))
(mul-lists (get-delay bambu-results) (get-cycles bambu-results))))
(define time-ratio (open-output-file "./data/time-ratio.csv"))
(display (table->string
(cons '("vericert" "vericert-fun") (for/list
([i time-ratio-vericert-full-inlining]
[j time-ratio-vericert-fun])
(list i j))))
time-ratio)
(close-output-port time-ratio)
(define slice-ratio (open-output-file "./data/slice-ratio.csv"))
(display (table->string
(cons '("vericert" "vericert-fun") (for/list
([i slice-ratio-vericert-full-inlining]
[j slice-ratio-vericert-fun])
(list i j))))
slice-ratio)
(close-output-port slice-ratio)
|