Optimization: measurement tries to save some reallocations

This commit is contained in:
Lukas Matena 2023-06-21 17:31:02 +02:00
parent 0f8208c83f
commit fa0abac952
2 changed files with 5 additions and 2 deletions

View File

@ -190,6 +190,7 @@ void MeasuringImpl::update_planes()
//const Halfedge_index he_orig = he;
m_planes[plane_id].borders.emplace_back();
std::vector<Vec3d>& last_border = m_planes[plane_id].borders.back();
last_border.reserve(4);
last_border.emplace_back(sm.point(sm.source(he)).cast<double>());
//Vertex_index target = sm.target(he);
const Halfedge_index he_start = he;

View File

@ -96,6 +96,8 @@ static GLModel::Geometry init_plane_data(const indexed_triangle_set& its, const
{
GLModel::Geometry init_data;
init_data.format = { GUI::GLModel::Geometry::EPrimitiveType::Triangles, GLModel::Geometry::EVertexLayout::P3N3 };
init_data.reserve_indices(3 * triangle_indices.size());
init_data.reserve_vertices(3 * triangle_indices.size());
unsigned int i = 0;
for (int idx : triangle_indices) {
const Vec3f& v0 = its.vertices[its.indices[idx][0]];
@ -1036,10 +1038,10 @@ void GLGizmoMeasure::update_if_needed()
{
auto update_plane_models_cache = [this](const indexed_triangle_set& its) {
m_plane_models_cache.clear();
m_plane_models_cache.resize(m_measuring->get_num_of_planes(), GLModel());
for (int idx = 0; idx < m_measuring->get_num_of_planes(); ++idx) {
m_plane_models_cache.emplace_back(GLModel());
GLModel::Geometry init_data = init_plane_data(its, m_measuring->get_plane_triangle_indices(idx));
m_plane_models_cache.back().init_from(std::move(init_data));
m_plane_models_cache[idx].init_from(std::move(init_data));
}
};