All pastes #728715 Raw Edit

Unnamed

public text v1 · immutable
·published 2007-10-07 08:53 UTC
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