mirror of
https://github.com/edeproject/ede.git
synced 2023-08-10 21:13:03 +03:00
Added clock and timeit functions
Some musings with examples
This commit is contained in:
parent
5a251cf812
commit
af32224d5b
@ -79,3 +79,16 @@
|
||||
(if (= n 0)
|
||||
lst
|
||||
(loop (- n 1) (cons n lst)))))
|
||||
|
||||
;;
|
||||
;; function for easier timing
|
||||
;;
|
||||
(define (timeit proc)
|
||||
(let ((v1 0)
|
||||
(v2 0))
|
||||
|
||||
(set! v1 (clock))
|
||||
(proc)
|
||||
(set! v2 (clock))
|
||||
;; 1000000 is value of CLOCKS_PER_SEC
|
||||
(/ (- v2 v1) 1000000)))
|
||||
|
@ -6,15 +6,41 @@
|
||||
(let loop ((lst lst)
|
||||
(nls '()))
|
||||
(if (null? lst)
|
||||
nls
|
||||
(loop (cdr lst) (cons (proc (car lst)) nls))))))
|
||||
(reverse nls)
|
||||
(loop (cdr lst)
|
||||
(cons (proc (car lst)) nls))))))
|
||||
|
||||
(define (map3 proc lst . more)
|
||||
(if (null? more)
|
||||
(map2 proc lst)
|
||||
(let map-more ((lst lst)
|
||||
(more more))
|
||||
(if (null? lst)
|
||||
lst
|
||||
(cons (apply proc (car lst) (map3 car more))
|
||||
(map-more (cdr lst)
|
||||
(map3 cdr more)))))))
|
||||
|
||||
(define v1 0)
|
||||
(define v2 0)
|
||||
|
||||
(set! v1 (clock))
|
||||
(define l (iota 1009))
|
||||
;(define l (iota 10))
|
||||
(set! v2 (clock))
|
||||
(println "=== Pass 1: " (/ (- v2 v1) 1000000))
|
||||
|
||||
(println "Doing map...")
|
||||
|
||||
(println
|
||||
(map2
|
||||
(lambda (x) (+ 1 x))
|
||||
l))
|
||||
(set! v1 (clock))
|
||||
(println (map3 (lambda (x) (+ 1 x)) l))
|
||||
(set! v2 (clock))
|
||||
(println "=== Pass 2: " (/ (- v2 v1) 1000000))
|
||||
;(println (map + l l))
|
||||
|
||||
(println "Time is: " (timeit
|
||||
(lambda ()
|
||||
(define v1 (iota 100))
|
||||
(map + v1 v1)
|
||||
)))
|
||||
|
||||
|
@ -1,6 +1,6 @@
|
||||
|
||||
(define (foo a b)
|
||||
"Retrun the sum of it's arguments"
|
||||
;;"Retrun the sum of it's arguments"
|
||||
(+ a b))
|
||||
|
||||
(display (foo 3 2))
|
||||
|
@ -1,6 +1,7 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include <edelib/Missing.h>
|
||||
|
||||
extern "C" {
|
||||
@ -64,6 +65,10 @@ static pointer s_setenv(scheme* sc, pointer args) {
|
||||
return sc->F;
|
||||
}
|
||||
|
||||
static pointer s_clock(scheme* sc, pointer args) {
|
||||
return mk_real(sc, (double)clock());
|
||||
}
|
||||
|
||||
void register_sys_functions(scheme* sc) {
|
||||
sc->vptr->scheme_define(
|
||||
sc,
|
||||
@ -76,4 +81,10 @@ void register_sys_functions(scheme* sc) {
|
||||
sc->global_env,
|
||||
sc->vptr->mk_symbol(sc, "setenv"),
|
||||
sc->vptr->mk_foreign_func(sc, s_setenv));
|
||||
|
||||
sc->vptr->scheme_define(
|
||||
sc,
|
||||
sc->global_env,
|
||||
sc->vptr->mk_symbol(sc, "clock"),
|
||||
sc->vptr->mk_foreign_func(sc, s_clock));
|
||||
}
|
||||
|
@ -37,10 +37,10 @@
|
||||
(set! i (+ i 1))
|
||||
)
|
||||
;
|
||||
;(set! l (re-split "</" "<a href=\"foo\">foo</a>xxx<a href=\"baz\">baz</a>"))
|
||||
;(for i in l
|
||||
; (print i "\n")
|
||||
;)
|
||||
(set! l (re-split "</" "<a href=\"foo\">foo</a>xxx<a href=\"baz\">baz</a>"))
|
||||
(for i in l
|
||||
(print i "\n")
|
||||
)
|
||||
|
||||
|
||||
;(print (re-replace "-" "@this--is-foo" "<p>") "\n")
|
||||
|
Loading…
Reference in New Issue
Block a user