Я пытаюсь отфильтровать облако точек с 1 600 000 точек, используя pcl :: RadiusOutlier из библиотеки PCL 1.8.1.
Код выглядит следующим образом:
pcl::RadiusOutlierRemoval<pcl::PointXYZ>
radius_outlier_removal;
radius_outlier_removal.setInputCloud(inCloud);
radius_outlier_removal.setRadiusSearch(radius);
radius_outlier_removal.setMinNeighborsInRadius(requiredNeighbours);
high_resolution_clock::time_point t1 = high_resolution_clock::now();
radius_outlier_removal.filter(*result);
high_resolution_clock::time_point t2 = high_resolution_clock::now();
auto duration = duration_cast<seconds>(t2 - t1).count();
cout << "Filtering took " << duration << " seconds." << endl;
Вывод в Microsoft Visual Studio (режим отладки) с включенной поддержкой Open MP.
Filtering took 208 seconds.
Вывод Ubuntu 18.04, также с встроенным режимом отладки, та же версия библиотеки, что и в Windows:
Filtering took 4 seconds.
Я искал другие темы и любую документацию о том, почему производительность может быть такой разной, но ничего не смог найти. Максимум, что я мог найти, - это убедиться, что OpenMP включен при компиляции, что я обязательно включил в Visual Studio.
Буду признателен за любые указания на то, почему Windows работает так медленно и как повысить ее производительность.