c++vector.push\u后退比python慢列表.append

2024-06-13 07:08:38 发布

您现在位置:Python中文网/ 问答频道 /正文

c++矢量推回一亿个元素,需要20秒。
c++列表推回一亿个元素,将崩溃。
python list追加一亿个元素,耗时9秒。你知道吗

python代码示例。你知道吗

import time

if __name__ == '__main__':

    start = time.time()
    s = []
    for i in xrange(100000000):         # one hundred million
        s.append(1)
    stop = time.time()
    print(stop - start)                 # second

c++代码示例。你知道吗

#include <iostream>
#include <algorithm>
#include <vector>
#include <chrono>
using std::vector;
using std::find;
using std::cout;
using std::endl;
using std::chrono::steady_clock;
using std::chrono::duration_cast;
using std::chrono::nanoseconds;


int main(void) {
    auto start = steady_clock::now();
    auto max_size = 100000000;     // one hundred million
    vector<int> b(max_size);

    for (int i = 0; i < max_size; ++i) {
        b.push_back(1);                             
    }

    auto end = steady_clock::now();
    auto nano = duration_cast<nanoseconds>(end - start);

    cout << "elapsed(nano seconds): " << nano.count();
         << "; vector.size: " << b.size() << endl; 

    return 0;
}

我不知道为什么c++vector/list比python list慢。你知道吗

谢谢大家,我把vector<int> b(max_size)改成vector<int> b; b.reserve(max_size);并启用优化到/O2,看起来速度非常快,只需要100毫秒


Tags: 元素autosizeincludetimestartmaxlist