File tree 1 file changed +33
-0
lines changed
1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change
1
+ import System ;
2
+
3
+ class Foo {
4
+ public var counter = 0 ;
5
+ function Bar ( ) { ++ counter ; }
6
+ }
7
+
8
+ class VirtualFoo {
9
+ public var counter = 0 ;
10
+ virtual function Bar ( ) { ++ counter ; }
11
+ }
12
+
13
+ class VirtualFoo2 extends VirtualFoo {
14
+ override function Bar ( ) { }
15
+ }
16
+
17
+ function time ( kind , block : function ( ) ) {
18
+ var calls = 100000000 ;
19
+ var start = DateTime . Now ;
20
+ for ( var i = 0 ; i < calls ; ++ i )
21
+ block ( ) ;
22
+ var elapsed = DateTime . Now - start ;
23
+ print ( calls + " " + kind + " in " + elapsed . TotalMilliseconds + "ms." ) ;
24
+ }
25
+
26
+ var foo = new Foo ( ) ;
27
+ var virtualFoo = new VirtualFoo ( ) ;
28
+
29
+ for ( var i = 0 ; i < 3 ; ++ i ) {
30
+ time ( "non virtual calls" , function ( ) { foo . Bar ( ) ; } ) ;
31
+ time ( "virtual calls" , function ( ) { virtualFoo . Bar ( ) ; } ) ;
32
+ }
33
+
You can’t perform that action at this time.
0 commit comments