Hello!

  I've got my first test results, and I'm having some doubts.

  The following code runs almost 200 seconds on a 20Mb file:

"file-name.csv" [ utf8 [ input-stream get
    [
        EBNF[=[
          quotedColumn = "\""~ (!("\"") .)* "\""~ quotedColumn*
            => [[ first2 swap prefix [ >string ] map "\"" join ]]
          unquotedColumn = (!("\t") .)*
          column = ( quotedColumn | unquotedColumn ) => [[ >string ]]
          rule = column ( "\t"~ column )* => [[ first2 swap prefix ]]
        ]=] ,
    ] each-stream-line
] with-file-reader ] { } make


  The following equivalent code using the csv vocab runs about 2 seconds on the 
same file:

"file-name.csv" [ utf8 [ input-stream get CHAR: \t [
    [ string>csv [ first , ] unless-empty ] each-stream-line
] with-delimiter ] with-file-reader ] { } make


  The difference is 100x, and the question is: is the speed difference related 
to the fact that I'm running the code in the Listener? Could it be that if I 
put it all into a vocab as opposed to running interactively it would get better 
optimized and reach the performance of the csv vocab?

---=====--- 
 Александр



_______________________________________________
Factor-talk mailing list
Factor-talk@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/factor-talk

Reply via email to