<?php
 
    include ( '../SearchableFile.phpclass' ) ;
 
    $file         =  'verybigfile.rtf' ;
 
    $t1         =  microtime ( true ) ;
 
 
    $sf         =  new SearchableFile ( ) ;
 
    $sf -> Open ( $file ) ;
 
    $pos         =  0 ;
 
    $search        =  '\\pict' ;
 
    $length     =  strlen ( $search ) ;
 
    $pos1         =  [] ;
 
    $pos2         =  [] ;
 
 
    while  ( ( $pos  = $sf -> strpos ( $search, $pos ) )  !==  false )
 
    {
 
        //echo "POS1 = $pos\n" ;
 
        $pos += $length ;
 
        $pos1 []    =  $pos ;
 
    }
 
 
    $t2         =  microtime ( true ) ;
 
    $contents     =  file_get_contents ( $file ) ;
 
    $pos         =  0 ;
 
 
    while  ( ( $pos  = strpos ( $contents, $search, $pos ) )  !==  false )
 
    {
 
        //echo "POS2 = $pos\n" ;
 
        $pos += $length ;
 
        $pos2 []    =  $pos ;
 
    }
 
    $t3         =  microtime ( true ) ;
 
 
    echo "Using SearchableFile    : " . round ( $t2 - $t1, 3 ) . "\n" ;
 
    echo "Using file_get_contents : " . round ( $t3 - $t2, 3 ) . "\n" ;
 
 
    if  ( count ( $pos1 )  !=  count ( $pos2 ) )
 
        echo "Result count mismatch : " . count ( $pos1 ) . " (SearchableFile), " . count ( $pos2 ) . " (file_get_contents)\n" ;
 
    else
 
    {
 
        for  ( $i = 0 ; $i  <  count ( $pos1 ) ; $i ++ )
 
        {
 
            if  ( $pos1 [$i]  !=  $pos2 [$i] )
 
                echo "Result mismatch at index #$i : {$pos1 [$i]} (SearchableFile), {$pos2 [$i]} (file_get_contents)" ;
 
        }
 
    }
 
 |