rendered paste body devel\~pinka\lib\Tools\profiler.f
REQUIRE B@ devel\~mOleg\lib\util\bytes.f
\ ------------------------------------------------------------------------------
: char+ ( 'char --> # )
B@ 0 SWAP
BEGIN DUP 0x80 AND WHILE
1 OVER D+
REPEAT DROP ;
: Char+ ( 'char --> # )
DUP BEGIN 1 + DUP B@ 0xC0 AND 0x80 = WHILE REPEAT - NEGATE ;
CREATE utf8cnt
0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B,
0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B,
0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B,
0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B,
0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B,
0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B, 0x01 B,
0x02 B, 0x02 B, 0x02 B, 0x02 B, 0x02 B, 0x02 B, 0x02 B, 0x02 B,
0x03 B, 0x03 B, 0x03 B, 0x03 B, 0x04 B, 0x04 B, 0x05 B, 0x06 B,
: cHar+ ( 'char --> # ) B@ 2/ [ utf8cnt ] LITERAL + B@ ;
CREATE 'x1 0x20 B, 0xFF B,
CREATE 'x2 0xDF B, 0x81 B, 0xFF B,
CREATE 'x3 0xEF B, 0x81 B, 0x82 B, 0xFF B,
CREATE 'x4 0xF7 B, 0x81 B, 0x82 B, 0x83 B, 0xFF B,
CREATE 'x5 0xFB B, 0x81 B, 0x82 B, 0x83 B, 0x84 B, 0xFF B,
CREATE 'x6 0xFD B, 0x81 B, 0x82 B, 0x83 B, 0x84 B, 0x85 B, 0xFF B,
\ EOF -- тест на скорость -------------------------------------------------------
: tesl 0x10000 0 DO 'x5 char+ DROP 'x6 char+ DROP
'x4 char+ DROP 'x3 char+ DROP
'x1 char+ DROP 'x2 char+ DROP
LOOP ;
: tesr 0x10000 0 DO 'x5 Char+ DROP 'x6 Char+ DROP
'x4 Char+ DROP 'x3 Char+ DROP
'x1 Char+ DROP 'x2 Char+ DROP
LOOP ;
: tesp 0x10000 0 DO 'x5 cHar+ DROP 'x6 cHar+ DROP
'x4 cHar+ DROP 'x3 cHar+ DROP
'x1 cHar+ DROP 'x2 cHar+ DROP
LOOP ;
: tttt ResetProfiles tesl tesr tesp .AllStatistic ;
tttt tttt tttt BYE