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 RSHIFT [ 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