Skip to content

Commit

Permalink
Added radius_outlier_removal benchmark.
Browse files Browse the repository at this point in the history
  • Loading branch information
larshg committed Dec 5, 2024
1 parent e1011b6 commit c23f6ba
Show file tree
Hide file tree
Showing 2 changed files with 89 additions and 0 deletions.
5 changes: 5 additions & 0 deletions benchmarks/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,11 @@ PCL_ADD_BENCHMARK(filters_voxel_grid FILES filters/voxel_grid.cpp
ARGUMENTS "${PCL_SOURCE_DIR}/test/table_scene_mug_stereo_textured.pcd"
"${PCL_SOURCE_DIR}/test/milk_cartoon_all_small_clorox.pcd")

PCL_ADD_BENCHMARK(filters_radius_outlier_removal FILES filters/radius_outlier_removal.cpp
LINK_WITH pcl_io pcl_filters
ARGUMENTS "${PCL_SOURCE_DIR}/test/table_scene_mug_stereo_textured.pcd"
"${PCL_SOURCE_DIR}/test/milk_cartoon_all_small_clorox.pcd")

PCL_ADD_BENCHMARK(search_radius_search FILES search/radius_search.cpp
LINK_WITH pcl_io pcl_search
ARGUMENTS "${PCL_SOURCE_DIR}/test/table_scene_mug_stereo_textured.pcd"
Expand Down
84 changes: 84 additions & 0 deletions benchmarks/filters/radius_outlier_removal.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,84 @@
#include <pcl/filters/radius_outlier_removal.h>
#include <pcl/io/pcd_io.h> // for PCDReader

#include <benchmark/benchmark.h>

static void
BM_RadiusOutlierRemoval(benchmark::State& state, const std::string& file)
{
// Perform setup here
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PCDReader reader;
reader.read(file, *cloud);

pcl::RadiusOutlierRemoval<pcl::PointXYZ> ror;
ror.setInputCloud(cloud);
ror.setRadiusSearch(0.02);
ror.setMinNeighborsInRadius(14);

pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_voxelized(
new pcl::PointCloud<pcl::PointXYZ>);
for (auto _ : state) {
// This code gets timed
ror.filter(*cloud_voxelized);
}
}

static void
BM_RadiusOutlierRemovalOpenMP(benchmark::State& state, const std::string& file)
{
// Perform setup here
pcl::PointCloud<pcl::PointXYZ>::Ptr cloud(new pcl::PointCloud<pcl::PointXYZ>);
pcl::PCDReader reader;
reader.read(file, *cloud);

pcl::RadiusOutlierRemoval<pcl::PointXYZ> ror;
ror.setInputCloud(cloud);
ror.setRadiusSearch(0.02);
ror.setMinNeighborsInRadius(14);
ror.setNumberOfThreads(0);

pcl::PointCloud<pcl::PointXYZ>::Ptr cloud_voxelized(
new pcl::PointCloud<pcl::PointXYZ>);
for (auto _ : state) {
// This code gets timed
ror.filter(*cloud_voxelized);
}
}

int
main(int argc, char** argv)
{
constexpr int runs = 100;

if (argc < 3) {
std::cerr
<< "No test files given. Please download `table_scene_mug_stereo_textured.pcd` "
"and `milk_cartoon_all_small_clorox.pcd`, and pass their paths to the test."
<< std::endl;
return (-1);
}

benchmark::RegisterBenchmark(
"BM_RadiusOutlierRemoval_milk", &BM_RadiusOutlierRemoval, argv[2])
->Unit(benchmark::kMillisecond)
->Iterations(runs);

benchmark::RegisterBenchmark(
"BM_RadiusOutlierRemoval_mug", &BM_RadiusOutlierRemoval, argv[1])
->Unit(benchmark::kMillisecond)
->Iterations(runs);

benchmark::RegisterBenchmark(
"BM_RadiusOutlierRemovalOpenMP_milk", &BM_RadiusOutlierRemovalOpenMP, argv[2])
->Unit(benchmark::kMillisecond)
->Iterations(runs);

benchmark::RegisterBenchmark(
"BM_RadiusOutlierRemovalOpenMP_mug", &BM_RadiusOutlierRemovalOpenMP, argv[1])
->Unit(benchmark::kMillisecond)
->Iterations(runs);

benchmark::Initialize(&argc, argv);
benchmark::RunSpecifiedBenchmarks();
}

0 comments on commit c23f6ba

Please sign in to comment.