/* g++ -O3 -pedantic -Wall -std=c++11 vecbench.cpp -o vec.exe && ./vec.exe 
*/
    #include <iostream>
    #include <vector>
    #include <ctime>
    
    std::vector<std::vector<float>> vec;
    
    int main(int argc, char *argv[]) {
        
        vec.resize(10000000);
        
        clock_t begin = clock();
        
        for (auto &i : vec) {
        i.push_back(1.3);
        i.push_back(1.3);
        i.push_back(1.3);
        i.push_back(1.3);
        i.push_back(1.3);
        i.push_back(1.3);
        i.push_back(1.3);
        i.push_back(1.3);
        i.push_back(1.3);
        }
        clock_t end = clock();
        double elapsed_secs = double(end - begin) / CLOCKS_PER_SEC;
        std::cout << "elapsed time: " << elapsed_secs << std::endl;
        
        return 0;
    }
    
    
    Run
    
    
    # nim c -r --gc:markAndSweep -d:release seqbench.nim
    import times, os, strutils
    
    template benchmark(benchmarkName: string, code: untyped) =
      block:
        let t0 = epochTime()
        code
        let elapsed = epochTime() - t0
        let elapsedStr = elapsed.formatFloat(format = ffDecimal, precision = 3)
        echo "CPU Time [", benchmarkName, "] ", elapsedStr, "s"
    
    var vec: seq[seq[float32]]
    
    vec.setLen(10000000)
    
    proc fill() =
        for i in 0..< vec.len:
            vec[i].add(1.3)
            vec[i].add(1.3)
            vec[i].add(1.3)
            vec[i].add(1.3)
            vec[i].add(1.3)
            vec[i].add(1.3)
            vec[i].add(1.3)
            vec[i].add(1.3)
            vec[i].add(1.3)
            vec[i].add(1.3)
    
    benchmark("elapsed time: ", fill())
    
    
    Run

C++: 2.766s Nim: 7.607s

Is there any faster way? I tried with shallowCopy, but there wasn't any 
difference

Reply via email to