In processing a large text file I have batches from ReadList of 100,000 Records of the form.
SeedRandom[123];
fromReadList =
MapThread[
"1\t2023.203\t" <> #1 <> "\t4.932\t" <> #2 <> "\t" <> #3 <>"\t430.334" &,
{RandomChoice[{.95, .05} -> {"73.030", "4.3103e+008"}, 100000],
RandomChoice[{.95, .05} -> {"23.335", "-1.02847e+007"}, 100000],
RandomChoice[{.4, .4, .2} -> {"Cake", "Cookies", "Muffins"}, 100000]}];
There are numbers scattered throughout the file that are in a (scientific) format that ToExpression does not recognize. Such that when I process the batch like so
res = MapThread[#1[#2] &, {Insert[Identity, 6]@ConstantArray[ToExpression, 6], #}] & /@
Select[ContainsAny[{#[[6]]}, {"Cake", "Cookies"}] &]@
StringSplit[fromReadList]
There are entries that are not numbers that should be. (e.g. res[[2, 3]] gives 8 + 4.3103 e).
If Interpreter["Number"] is swapped for ToExpression then one batch takes far too long to complete considering that the file has 400+ batches to process.
MapThread[#1[#2] &, {Insert[Identity, 6]@ConstantArray[Interpreter["Number"], 6], #}] & /@
Select[ContainsAny[{#[[6]]}, {"Cake", "Cookies"}] &]@
StringSplit[fromReadList]
The unrecognized number strings can be in any of the number locations. How can I either speed up Interpreter["Number"] or apply some other technique to process the numbers in the batch.
I am placing the results each batch into a database ("HSQL(Standalone)") using SQLInsert and am open to any shortcuts that could take advantage of this.

Internal`StringToDoublein place ofToExpression. – Leonid Shifrin Jun 14 '16 at 16:30Internal`and that is undocumented? – Edmund Jun 14 '16 at 16:33ImportandImportStringhandle theenumber format okay.res2 = fromReadList~StringRiffle~"\n"~ImportString~"TSV"~Cases~{__,"Cake"|"Cookies",_};– Simon Woods Jun 14 '16 at 18:05enumber format but it is twice as fast as my existing code. (+1) – Edmund Jun 14 '16 at 19:31System`Convert`TableDump`ParseTableseemed quite fast the last time I had need of it. – Mr.Wizard Jun 15 '16 at 00:12ToExpressionmethod above that does not work with the"e"format. – Edmund Jun 15 '16 at 00:33