İPUCU

Python Artificial Intelligence’da en çok kullanılan dildir ve gerekli dökümanların paylaşım alanlar burada paylaşılmaktadır.

Seçenekler

Rust ile Python'ı Hızlandıralım

Gbmdpof - ait Kullanıcı Resmi (Avatar)
Kıdemli Yazılımcı
Üyelik tarihi:
09/2016
Mesajlar:
1.998
Konular:
157
Teşekkür (Etti):
197
Teşekkür (Aldı):
712
Ticaret:
(0) %
15-07-2018 00:15
#1
Rust ile Python'ı Hızlandıralım
[COLOR="White[SIZE="4 Rust CPython 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.

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):[LIST][*][SIZE="4
---------------------
~humanity is overrated~
Konu Gbmdpof tarafından (15-07-2018 00:22 Saat 00:22 ) değiştirilmiştir.
k3~
k3~ - ait Kullanıcı Resmi (Avatar)
Özel Üye
Üyelik tarihi:
10/2015
Mesajlar:
2.881
Konular:
202
Teşekkür (Etti):
1743
Teşekkür (Aldı):
3389
Ticaret:
(0) %
15-07-2018 00:31
#2
Elinize sağlık
oldnco - ait Kullanıcı Resmi (Avatar)
Üye
Üyelik tarihi:
09/2017
Yaş:
29
Mesajlar:
1.520
Konular:
43
Teşekkür (Etti):
636
Teşekkür (Aldı):
372
Ticaret:
(0) %
15-07-2018 00:34
#3
Elinize sağlık komutanım

Bookmarks


« Önceki Konu | Sonraki Konu »
Seçenekler

Yetkileriniz
Sizin Yeni Konu Acma Yetkiniz var yok
You may not post replies
Sizin eklenti yükleme yetkiniz yok
You may not edit your posts

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodları Kapalı
Trackbacks are Kapalı
Pingbacks are Kapalı
Refbacks are Kapalı