Ускорять для начала нужно cобственно операцию сравнения строк. Каждой строке сопоставляем некое значение, называемое хеш. В простейшем случае, сумма всех ASCII-кодов символов строки. Тогда сравнение строк сведётся к следующей операции. Кеши не равны ? ----> строки однозначно не равны. Кеша равны ? Обычное сравнение. Этот приём ускоряет операцию сравнения строк до пяти и более раз, в зависимости от длины строк, по сравнению со strcmp. Соответсвенно, и весь алгортим ускорится до 5 раз и более.
спасибо.
Object.GetHashCode() - вроде даже работает ))
зы. напишу для чего все это мне нужно...
захотелось мне написать прогу, которая находит TTH для файлов, которые я из DC++ скачиваю.
можно конечно его просто посчитать, но это не очень быстро. на моем компе скорость около 12-15 МБ\с при полной загрузке ЦПУ.
пытался найти опцию, чтобы в лог StrongDC++ заносить TTH скачиваемого файла - не нашел. он даже размер туда часто неправильный заносит.
а поэтому сделал так. прога читает лог, ищет эти файлы на харде, смотрит их размер.
далее из папки диси читает файллист (это XML в архиве). читает просто. создаю DataSet и вызываю DataSet.ReadXML. он это читает, долольно долго кстати для больших файлов. и распихивает все что прочитал по таблицам, среди которых есть и таблица файлов, у которой столбцы - имя, размер и TTH ... вот собственно я эту табличку и сравниваю с массивом струткур, в которой имена и размеры файлов, скачанных с данного юзера.