]> gitweb.factorcode.org Git - factor.git/blob - extra/benchmark/dispatch3/dispatch3.factor
factor: trim using lists
[factor.git] / extra / benchmark / dispatch3 / dispatch3.factor
1 USING: alien.c-types sequences math mirrors grouping
2 kernel make assocs alien.syntax columns
3 specialized-arrays bit-arrays ;
4 SPECIALIZED-ARRAY: double
5 IN: benchmark.dispatch3
6
7 GENERIC: g ( obj -- str )
8
9 M: assoc g drop "assoc" ;
10
11 M: sequence g drop "sequence" ;
12
13 M: virtual-sequence g drop "virtual-sequence" ;
14
15 M: number g drop "number" ;
16
17 M: object g drop "object" ;
18
19 : objects ( -- seq )
20     [
21         H{ } ,
22         \ + <mirror> ,
23         V{ 2 3 } ,
24         1 ,
25         10 >bignum ,
26         { 1 2 3 } ,
27         "hello world" ,
28         SBUF" sbuf world" ,
29         V{ "a" "b" "c" } ,
30         double-array{ 1.0 2.0 3.0 } ,
31         "hello world" 4 tail-slice ,
32         10 f <repetition> ,
33         100 2 <groups> ,
34         "hello" <reversed> ,
35         f ,
36         { { 1 2 } { 3 4 } } 0 <column> ,
37         ?{ t f t } ,
38         B{ 1 2 3 } ,
39         [ "a" "b" "c" ] ,
40         1 [ + ] curry ,
41         123.456 ,
42         1/6 ,
43         C{ 1 2 } ,
44         ALIEN: 1234 ,
45     ] { } make ;
46
47 : dispatch3-benchmark ( -- )
48     2000000 objects [ [ g drop ] each ] curry times ;
49
50 MAIN: dispatch3-benchmark