Показать сообщение отдельно
  #10  
Старый 05.03.2013, 22:04
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

Весь косяк, думаю, в постоянной релокации массивов. Это очень долго. Ну и чтение по строчкам (22 тысячи отдельных обращений к диску вместо пары-тройки) тоже вносят свою лепту.
Вот так
Код:
  st := TStringList.Create();
  st.LoadFromFile('123.txt');
  GetMem(tar1, st.Count * sizeof(integer));
  GetMem(tar2, st.Count * sizeof(integer));
  for i := 0 to st.Count-1 do
  begin
      s := st.Strings[i];
      j := Pos(' ', s);
      k := length(s);
      while s[k] <> ' ' do
        dec(k);

      tar1[i] := StrToInt(copy(s, 1, j - 1));
      tar2[i] := StrToInt(copy(s, k + 1, length(s) - k));
  end;
  Writeln('Fin!');
  Readln;
Чуть быстрее, чем моментально (тестил на 200 тыс строк, строки скопированы из твоего первого поста и размножены).

ЗЫЖ не обращай внимания на getmem, это еще с древних времен. PascalSchool так сказать. Юзай SetLength.
__________________
jmp $ ; Happy End!
The Cake Is A Lie.
Ответить с цитированием