Я написал программу, которая читает WAV-файл и собирает различные данные, затем выполняет определенные вычисления и выводит любую полезную информацию, которая мне нужна (конечная точка - это дискриминатор голоса). Все это происходит по отдельности для каждого файла в отдельном объекте класса, но для каждой из них требуется только отдельная строка ввода, поэтому я решил, что могу довольно легко наполнить приложение, и я мог бы запустить его в четыре раза быстрее или около того.Использование ядра в C#
Это я сделал, и, похоже, он работает хорошо. Тем не менее, когда я пришел ко времени приложения (с потоком и без потоковой передачи), я получил около 3 секунд в течение минуты, чтобы работать через ~ 3600 файлов. Мое лучшее предположение для этого - входы/выходы файлов, и я увижу большие улучшения во всех проверенных тестах, но это не то, что меня особенно интересует.
С Диспетчером задач, открытым на Win7, обе версии приложения демонстрировали аналогичную активность на всех четырех (виртуальных) ядрах на моей i3-машине, которые затем все сбрасывались до минимума по завершении.
Итак, мой вопрос: компилятор C# и Visual Studio, в частности, уже оптимизированы для нескольких ядер? а если нет, я пропустил что-то фундаментальное?
Я только что включил все свои тесты и выключил файлы журнала и снова запустил: 20 секунд против 35. Так что, моя производительность тонула в дисковых вводах-выводах, как ожидалось. Я уже установил большую часть этого, но спасибо, что поставил его так ясно. Я в основном хотел проверить, что я ничего не пропустил. – FlyingWeagle