haword писал(а):может все таки не до оптимизировал?
Естественно, не дооптимизировал. Ибо дооптимизировать "до конца" будет означать переписать заново.
К примеру вот мы считываем строку и парсим, получаем первый параметр (C#):
- Код: Выделить всё
- while ((s = sr.ReadLine()) != null)
 {
 string[] sp = s.Split('t');
 if (sp.Length < 11)
 {
 ++Errors;
 continue;
 }
 uint unixdate;
 try
 {
 unixdate = uint.Parse(sp[0]);
 }
 catch (Exception e)
 {
 ++Errors;
 continue;
 }
Вот переведенное:
- Код: Выделить всё
- sp:=TStringList.Create;
 while not eof(sr) do begin
 readln(sr,s);
 spl:=ParsingWithTabsSpaces(s,sp);
 if (spl < 11) then begin
 inc(Errors);
 continue;
 end;
 unixdate:=StrToIntDef(sp.Strings[0],0);
 if (unixdate=0) then begin
 inc(Errors);
 continue;
 end;
...Которое вместо обсосанного всячески рунтайма .net framework применяет вот такое вот самоделко:
- Код: Выделить всё
- function ParsingWithTabsSpaces(Var s:string; var sl:TStringList):integer;
 Var s1:string;
 so:string;
 i:integer;
 begin
 Result:=0;
 sl.Clear;
 so:=s;
 while true do begin
 so:=TrimLeft(so);
 if (so='') then break;
 s1:='';
 i:=1;
 while(true) do begin
 if not (so[i] in [#9,#32]) then
 begin
 s1+=so[i];
 if (i<>length(so)) then begin inc(i); continue; end;
 end;
 so:=Copy(so,i+1,256);
 inc(i);
 break;
 end;
 sl.Add(s1);
 inc(Result);
 end;
 end;
Добавлено спустя 6 минут 5 секунд:
Для корректного сравнения по скорости, конечно, нужен сравниваемый код приводимый один к другому более адекватно.
Ну так оригинал то особо тоже не оптимизировался - сваян быстренько для получения результатов и работает. На стандартных средствах, подчеркиваю. А в переводе что ни строка, то buttheard - еще и надо крепко призадуматься, как это сделать - средств библиотек нет, то что есть - архаично-корявое. Вплоть до того (не задумывались кстати?) что у функций разный порядок следования аргументов. Это я про POS.

Добавлено спустя 3 минуты 47 секунд:
Я сейчас ради спортивного интереса занялся переводом этого самого на С++. Любопытно, какие показатели окажутся там. Уже вылавливаю очередной unhandled exception, созданный где-то вне моего кода при завершении программы.
 
 Жесть вообще. У этой реализации приходится вообще менять логику работы из-за гениальной реализации STL




