summaryrefslogtreecommitdiffstats
path: root/scripts/gen-data.rkt
blob: 0410bc6bf294a4e0fc254ed49d20a9298dd5fe7d (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
70
71
72
73
74
#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-row-string lst n)
  (map (lambda (x) (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 '("benchmark" "vericert" "vericert-fun") (for/list
              ([b (get-row-string bambu-results 0)]
               [i time-ratio-vericert-full-inlining]
               [j time-ratio-vericert-fun])
            (list b i j))))
         time-ratio)
(close-output-port time-ratio)

(define slice-ratio (open-output-file "./data/slice-ratio.csv"))
(display (table->string
          (cons '("benchmark" "vericert" "vericert-fun") (for/list
              ([b (get-row-string bambu-results 0)]
               [i slice-ratio-vericert-full-inlining]
               [j slice-ratio-vericert-fun])
            (list b i j))))
         slice-ratio)
(close-output-port slice-ratio)