- 23 Eyl 2016
- 2,001
- 11
[COLOR="White[SIZE="4 [URL="https://tik.lat/0MCh9"] Rust CPython[/URL] kullanacağım fakat bunun dışında Milksnake, PyO3 gibi başka paketler de kullanabilirsiniz.
Bu örnek için bir metni işleyelim ve bir metindeki tekrarlanan harfleri bulalım. Bu örnek farklı yollarla yapılabilecek olsa da genelde Python kullandığımızda yavaş kalacaktır.
Öncelikle sadece saf Python ile yapılmış ve bir tane de regex kullanılarak yapılmış örneklerin hızlarını karşılaştıralım. Bunun için pytest-benchmark'ı kullanabiliriz. Öncelikle bunu kuralım.
Şimdi de tekrarlanan harfleri bulan bir program oluşturalım.
Sonrasında ise pytest ile hızlarını karşılaştıralım.
Mean, yani ortalama sütünundaki verileri karşılaştıralım (Düşük olan daha iyi):
Bu örnek için bir metni işleyelim ve bir metindeki tekrarlanan harfleri bulalım. Bu örnek farklı yollarla yapılabilecek olsa da genelde Python kullandığımızda yavaş kalacaktır.
Öncelikle sadece saf Python ile yapılmış ve bir tane de regex kullanılarak yapılmış örneklerin hızlarını karşılaştıralım. Bunun için pytest-benchmark'ı kullanabiliriz. Öncelikle bunu kuralım.
Kod:
sudo pip3 install pytest pytest-benchmark
Şimdi de tekrarlanan harfleri bulan bir program oluşturalım.
Kod:
import re
import string
import random
def count_doubles(val):
total = 0
for c1, c2 in zip(val, val[1:]):
if c1 == c2:
total += 1
return total
def count_doubles_regex(val):
return len(
re.findall(r'(?=(.)\1)', val)
)
val = ''.join(random.choice(string.ascii_letters) for i in range(1000000))
def test_pure_python(benchmark):
benchmark(count_doubles, val)
def test_regex(benchmark):
benchmark(count_doubles_regex, val)
Sonrasında ise pytest ile hızlarını karşılaştıralım.
Kod:
--------------------------------------------------------------------------------- benchmark: 2 tests --------------------------------------------------------------------------------
Name (time in ms) Min Max Mean StdDev Median IQR Outliers OPS Rounds Iterations
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
test_regex 25.2548 (1.0) 27.6755 (1.0) 26.0014 (1.0) 0.6194 (1.0) 25.8104 (1.0) 0.6600 (1.0) 10;3 38.4594 (1.0) 38 1
test_pure_python 48.9853 (1.94) 53.7152 (1.94) 50.3087 (1.93) 1.1094 (1.79) 50.1514 (1.94) 1.2340 (1.87) 7;1 19.8773 (0.52) 21 1
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Mean, yani ortalama sütünundaki verileri karşılaştıralım (Düşük olan daha iyi):
- [SIZE="4
Son düzenleme: