代码:
def iterrange1(f, c):
while f <= c:
yield f
f += 1
class iterrange2:
def __init__(self, f, c):
self.f, self.c = f, c
def __iter__(self):
return self
def next(self):
if self.f > self.c:
raise StopIteration()
self.f += 1
return self.f - 1
import time
COUNT = 10000000
t1 = time.time()
for i in iterrange1(1, COUNT):
pass
t2 = time.time()
for i in iterrange2(1, COUNT):
pass
t3 = time.time()
for i in range(1, COUNT):
pass
t4 = time.time()
for i in xrange(1, COUNT):
pass
t5 = time.time()
print t2 - t1
print t3 - t2
print t4 - t3
print t5 - t4
输出:
10.9420001507
13.7029998302
0.862000226974
0.669999837875
但是相比之下,c++就要快的不止一点点:
#include <iostream>
#include <chrono>
static constexpr size_t COUNT = 10000000;
int main()
{
auto ts1 = std::chrono::steady_clock::now();
for (auto i = 0; i < COUNT; ++i)
{}
auto ts2 = std::chrono::steady_clock::now();
std::cout << std::chrono::duration_cast<std::chrono::microseconds>(ts2 - ts1).count() << "us" << std::endl;
return 1;
}
输出:
14804us