В настоящее время мы пытаемся отслеживать производительность программы ac # с помощью VisualStudio Concurrency Profiler.Программа использует параллельную обработку, чтобы сначала прочитать данные в BlockingCollection, а затем записать данные в таблицу базы данных из второй BlockingCollection.
Обычно программа будет использовать в общей сложности 3 потока на четырехъядерном компьютере.Однако при запуске с профилировщиком параллелизма (на этот раз в четырехъядерной виртуальной машине) мы видим использование двадцати или тридцати потоков, а также большой объем синхронизации (85%) и конкуренцию.Это также занимает в четыре раза больше времени.
Кто-нибудь видел подобное поведение, или есть объяснение, почему это может происходить?Можно ли объяснить различия виртуальной машиной, а не профайлером параллелизма?