HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
 
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 18.10.2009, 10:49
slesh
Познавший АНТИЧАТ
Регистрация: 05.03.2007
Сообщений: 1,985
Провел на форуме:
3288241

Репутация: 3349


Отправить сообщение для slesh с помощью ICQ
По умолчанию

тут дело не в потоках, а в скорости считывания с винта + правильности алгоритма считывания строк.
Простой пример из С++
функций
Код:
ULONG CountLinesInFile(char* name)
{
	FILE* file;
	ULONG ret = 0;
	char buf[64];
	
	file = fopen(name, "rt");
	if (file)
	{
		while (!feof(file))
		{
			if (fgets(buf, 64, file)) 
			{
				ret++;
			}
		}
		
		fclose(file);
	}
	
	return ret;
}
пересчитываем спамбазу на 1,7 лямов мыл примерно за 2-3 секунды.
Если адаптировать для поиска #10 символов в свободно считанных данных, то можно и быстрее ускорить.
Читать в потоках не советую потому что из-за синхронизации(которую придется тебе делать) ты потеряешь в скорости.
По этому самый лучшый выход такой:
Код:
var
 buf:array[0..1024*64-1];  //типа 64 кила буфер
 len:dword; // кол-во считанных данных
 h:dword;
 cnt : dword;
 x :dword;
begin
h := CreateFile(....);
if h <> $FFFFFFFF then
  begin
    cnt := 0;
    while true do
    begin
      if ReadFile(h,...., len) then
      begin
        for x := 0 to len-1 do if buf[x] = #10 then inc(cnt);
      end else break;
      if len < 1 then break;
    end;
   
    CloseHandle(h)
  end;
end;
после этого cnt будет = кол-ву строк

Последний раз редактировалось slesh; 18.10.2009 в 10:56..
 
Ответить с цитированием
 



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/Wi-Fi/Wardriving 2568 25.04.2026 12:58
[jQuery] - Задай вопрос, получи ответ Isis PHP 62 25.12.2009 03:25



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ