Я написал часть программы, которая делает тяжелую работу со строками в С#. Я изначально выбрал С# не только потому, что было проще использовать структуры данных .NET, но также потому, что мне нужно использовать эту программу для анализа 2-3 миллионов текстовых записей в базе данных, и гораздо проще подключиться к базам данных с помощью С#.
Была часть программы, которая замедляла весь код, и я решил переписать его на C с помощью указателей для доступа к каждому символу в строке, а теперь часть кода, которая заняла около 119 секунд для анализа 10 000 000 строк в С# берет код C всего 5 секунд! Производительность является приоритетом, поэтому я рассматриваю возможность перезаписи всей программы на C, компиляции ее в dll (что-то, что я не знал, как это сделать, когда я начал писать программу) и использовать DllImport из С#, чтобы использовать его методы для работы с строками базы данных.
Учитывая, что для перезаписи всей программы потребуется некоторое время, и поскольку использование DllImport для работы с строками С# требует сортировки и таких вещей, мой вопрос заключается в том, что увеличение производительности от более быстрой обработки строк C dll перевешивает производительность, связанную с необходимостью неоднократно маршал строки для доступа к C dll из С#?