mardi 28 août 2018

Is there a way to make this code faster?

I have a C++ struct that I need to convert to a list so that I can load into GPU

struct point_cloud_tensor
{
    std::vector<float>               timestamp;
    std::vector<std::vector<double>>  position;
    // more fields
};


point_cloud_tensor sweep_to_array(const point_sweep &point_sweep)
{
    const auto         num_points = point_sweep.points.size();
    point_cloud_tensor tensor;

    point_cloud_tensor.timestamp.reserve(num_points);
    point_cloud_tensor.point.reserve(num_points);

    for (int i = 0; i < point_sweep.points.size(); i++)
    {
        const auto point = point_sweep.points.at(i);
        tensor.timestamp.push_back(point.timestamp);

        std::vector<double> point_triple(3);
        point_triple.push_back(point.x);
        point_triple.push_back(point.y);
        point_triple.push_back(point.z);
        tensor.position.push_back(point_triple);
        // more fields
    }

    return tensor;
}

There are about 100K points in the sweep vector and this runs in about 30ms.

Is there a way to substantially reduce this?

Aucun commentaire:

Enregistrer un commentaire