バイトコード 
生成されるバイトコードの比較。
組み込み型vs組み込み型のラッパークラス 
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
|
-
|
-
|
!
|
!
-
|
|
!
| class MyUInt
{
MyUInt( const uint& in aVal )
{
this.mVal = aVal;
}
uint mVal;
};
void cla()
{
MyUInt i(0);
i.mVal += 1;
}
Temps: 2, 3
0 0 * PUSH 3
- 12,5 -
1 3 * SUSPEND
2 3 * VAR v1
3 4 * SetV4 v2, 0x0 (i:0, f:0)
5 4 * VAR v2
6 5 * GETREF 0
7 5 * GETREF 1
8 5 * ALLOC 0xa8cebf8, 66
- 13,5 -
11 3 * SUSPEND
12 3 * PSF v1
13 4 * CHKREF
14 4 * RDS4
15 4 * ADDSi 16
17 4 * PopRPtr
18 3 * RDR4 v2
19 3 * ADDIi v2, v2, 1
22 3 * WRTV4 v2
- 14,2 -
23 3 * SUSPEND
24 3 * PSF v1
25 4 * FREE 0xa8cebf8
27 3 * 0:
27 0 * RET 0
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
-
|
|
!
| void sca()
{
uint i = 0;
i += 1;
}
Temps: 2
0 0 * PUSH 2
- 18,5 -
1 2 * SUSPEND
2 2 * SetV4 v1, 0x0 (i:0, f:0)
- 19,5 -
4 2 * SUSPEND
5 2 * ADDIi v1, v1, 1
- 20,2 -
8 2 * SUSPEND
9 2 * 0:
9 0 * RET 0
|
極力組み込み型を使ったほうが良さげ。
普通の関数コールvsメンバ関数コール 
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
|
-
|
-
!
!
-
|
!
| class Class
{
void classFunc()
{
}
};
void callClassFunc( Class@ obj )
{
obj.classFunc();
}
Temps:
- 48,5 -
0 0 * SUSPEND
1 0 * PSF v0
2 1 * CHKREF
3 1 * RDS4
4 1 * CALL 68 (void Class::classFunc())
- 49,2 -
6 0 * SUSPEND
7 0 * 0:
7 0 * PSF v0
8 1 * FREE 0xa8d0230
10 0 * RET 1
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
-
!
-
|
!
| void func()
{
}
void callFunc()
{
func();
}
Temps:
- 57,5 -
0 0 * SUSPEND
1 0 * CALL 74 (void func())
- 58,2 -
3 0 * SUSPEND
4 0 * 0:
4 0 * RET 0
|
|