Я собираюсь запустить проект, который будет принимать блоки текста, анализируя много данных в них на какой-то объект, который затем может быть сериализован, сохранен и статистически/данные, полученные из. Это должно быть как можно быстрее, так как у меня есть> 10 000 000 блоков текста, которые мне нужно начинать, и получат 100 000 тысяч в день.Самый быстрый способ разбора больших строк (многопоточность)
Я запускаю это на системе с 12 ядрами xeon + hyper threading. У меня также есть доступ/немного знать о программировании CUDA, но для струнных вещей думаю, что это не подходит. Из каждой строки мне нужно разбирать много данных, а некоторые из них я знаю, какие позиции я, а некоторые нет, и нужно использовать regex/something smart.
Так считают что-то вроде этого:
object[] parseAll (string [] stringsToParse)
{
parallel foreach
parse(string[n])
}
object parse(string s)
{
try to use exact positions/substring etc here instead of regex's
}
Так мои вопросы:
- Сколько медленнее использует регулярное выражение, чтобы подстрока.
- Является ли .NET значительно медленнее, чем другие языки.
- Какую оптимизацию (если таковая имеется) можно сделать для максимизации параллелизма.
- Что-нибудь еще, что я не рассматривал?
Спасибо за любую помощь! Извините, если это долгое время.
Мое предположение - IO будет ограничивающим фактором. Настройте несколько простых тестовых примеров и проанализируйте использование ресурсов и т. Д. – 2010-11-06 19:07:24
На современном ПК объем, о котором вы говорили, является небольшим обжариванием для работы с данными. Метод, который вы предлагаете, звучит, э-э, звук. Подумайте также об использовании таких вещей, как IndexOf, когда вы знаете, что можете безопасно искать фиксированную строку. Избегайте ToUpper/Lower, если можете, если функции сравнения поддерживают игнорирование случая. Но сначала, напишите для удобочитаемости, а затем оптимизируйте. – Will