මම පයිතන් / NumPy හි ලියා ඇති මෙම කේතය මා සතුව ඇත
from __future__ import division
import numpy as np
import itertools
n = 6
iters = 1000
firstzero = 0
bothzero = 0
""" The next line iterates over arrays of length n+1 which contain only -1s and 1s """
for S in itertools.product([-1, 1], repeat=n+1):
"""For i from 0 to iters -1 """
for i in xrange(iters):
""" Choose a random array of length n.
Prob 1/4 of being -1, prob 1/4 of being 1 and prob 1/2 of being 0. """
F = np.random.choice(np.array([-1, 0, 0, 1], dtype=np.int8), size=n)
"""The next loop just makes sure that F is not all zeros."""
while np.all(F == 0):
F = np.random.choice(np.array([-1, 0, 0, 1], dtype=np.int8), size=n)
"""np.convolve(F, S, 'valid') computes two inner products between
F and the two successive windows of S of length n."""
FS = np.convolve(F, S, 'valid')
if FS[0] == 0:
firstzero += 1
if np.all(FS == 0):
bothzero += 1
print("firstzero: %i" % firstzero)
print("bothzero: %i" % bothzero)
එය අහඹු අරා දෙකක සම්පිණ්ඩනය වාර ගණනක් ගණනය කරයි, එකක් අනෙකට වඩා දිගු, නිශ්චිත සම්භාවිතා ව්යාප්තියක් සහිතව, පළමු ස්ථානයේ 0 ක් හෝ ස්ථාන දෙකෙහිම 0 ක් ඇත.
මගේ මිතුරෙකු සමඟ ඔට්ටුවක් ඇති අතර ඔහු පවසන්නේ කේත ලිවීමට පයිතන් භයානක භාෂාවක් බවයි. මගේ පරිගණකයේ 9s අවශ්යයි. “නිසි භාෂාවකින්” ලිවුවහොත් එය 100 ගුණයකින් වේගවත් කළ හැකි බව ඔහු පවසයි.
අභියෝගය නම් මෙම කේතයට ඔබ කැමති ඕනෑම භාෂාවකින් 100 ගුණයක් වේගවත් කළ හැකිද යන්න බැලීමයි. මම ඔබේ කේතය පරික්ෂා කර බලා වේගවත්ම සතියක් ජය ගන්නෙමි. යමෙකු 0.09s ට වඩා අඩු වුවහොත් ඔවුන් ස්වයංක්රීයව ජය ගන්නා අතර මට අහිමි වේ.
තත්ත්වය
- පයිතන් . ඇලිස්ටෙයාර් බක්සන් විසින් 30 ගුණයක් වේගවත් කරන්න! වේගවත්ම විසඳුම නොවුනත් ඇත්ත වශයෙන්ම එය මගේ ප්රියතමය.
- ඔක්ටේව් . The තීතෝස් විසින් 100 ගුණයක් වේගවත් කරයි.
- මලකඩ . Bdbaupp විසින් 500 ගුණයකින් වේගවත් කරන්න.
- සී ++ . ගයි සර්ටන් විසින් 570 ගුණයකින් වේගවත් කරයි.
- සී . 727 ගුණයකින් වේගවත් වේ.
- සී ++ . @ ස්ටෙෆාන් විසින් ඇදහිය නොහැකි තරම් වේගවත්.
වේගවත්ම විසඳුම් දැන් සංවේදී වේලාවට වඩා වේගවත් ය. එබැවින් මම n සිට 10 දක්වා වැඩි කර ඇති අතර හොඳම ඒවා සංසන්දනය කිරීම සඳහා iters = 100000 සකසා ඇත. මෙම මිනුම යටතේ වේගවත්ම වේ.
- සී . 7.5s byace.
- සී ++ . 1 ස්ටෙෆාන් විසිනි.
මගේ යන්ත්රය වේලාව මගේ යන්ත්රය මත ක්රියාත්මක වේ. මෙය AMD FX-8350 අට-මූලික සකසනයක සම්මත උබුන්ටු ස්ථාපනයකි. මෙයින් අදහස් කරන්නේ මට ඔබේ කේතය ක්රියාත්මක කිරීමට හැකි විය යුතු බවයි.
පසු විපරම් පළ කිරීම මෙම තරගය x100 වේගවත් කිරීමක් ලබා ගැනීම පහසු නොවන බැවින්, ඔවුන්ගේ වේගවත් ගුරු විශේෂ ise දැනුම ලබා ගැනීමට කැමති අය සඳහා මම පසු විපරමක් පළ කර ඇත්තෙමි. පයිතන් ඇත්තටම (II කොටස) කෙතරම් මන්දගාමීදැයි බලන්න.