2016-08-30 13 views
5

में बेंचमार्क के लिए मॉड्यूल के एकाधिक संस्करणों/शाखाओं को आयात करना जूलिया में एक ही स्क्रिप्ट में एक ही मॉड्यूल के कई अलग-अलग संस्करणों या शाखाओं का उपयोग कैसे कर सकता हूं?जूलिया

उदा। अगर मैं प्रत्येक टैग की गई रिलीज को बेंचमार्क करना चाहता हूं। अपने आप को मैं इस का जवाब दे दिया है, लेकिन मुझे यकीन है कि उनके लिए एक बेहतर तरीका हो सकता है कर रहा हूँ:

(किसी व्यक्ति ने एक ऐसी ही सवाल हाल ही में पूछा और मैं गलत एक जवाब है, लेकिन हालांकि यह वैसे भी उपयोगी हो सकता है।)

संपादित करें!

उत्तर

4

आप बस मॉड्यूल के एक अलग संस्करण को चेकआउट कर सकते हैं और फिर बेंचमार्क Tools.jl का उपयोग बेंचमार्क में कर सकते हैं। हालांकि कई स्क्रिप्ट का उपयोग करना बेहतर हो सकता है (या कम से कम पहले परीक्षण को अनदेखा करें) (अधिक जानकारी के लिए इस टिप्पणी को Importing multiple versions of the same Module/Package for Benchmarking देखें)।

उदा।

packagedir = Pkg.dir("DSP") 
version2checkout = "v0.0.7" 
run(`cd $packagedir`); run(`git checkout tags/$version2checkout`) 
import DSP 
# do all your benmarking stuff 
# start again 

आपको मॉड्यूल की प्रतिलिपि बनाने से रोकता है लेकिन फिर भी मुझे लगता है कि थोड़ा सा गुंजाइश है। तुम भी Git टैग के उत्पादन

for i in readlines(`git tag`) 
    version2checkout = chomp(i) 
    # checkout version and benchmark 
end 
1

भी ध्यान रखें कि Pkg.checkout एक वैकल्पिक branch तर्क लेता कब्जा कर संस्करणों के बहुत सारे के लिए एक पाश में यह कर सकता है:

help?> Pkg.checkout 
    checkout(pkg, [branch="master"]; merge=true, pull=true) 

    Checkout the Pkg.dir(pkg) repo to the branch branch. Defaults to checking 
    out the "master" branch. To go back to using the newest compatible released 
    version, use Pkg.free(pkg). Changes are merged (fast-forward only) if the 
    keyword argument merge == true, and the latest version is pulled from the 
    upstream repo if pull == true. 

तो तुम Pkg.checkout("MyPackage", "v0.6.0") कर सकते हैं। यह सुनिश्चित करने के लिए कि मॉड्यूल को पुनः लोड किया गया है, workspace() फ़ंक्शन काम में आ सकता है; या प्रत्येक पैकेज संस्करण के लिए एक नई जूलिया प्रक्रिया निष्पादित की जा सकती है।

+0

क्या आपने यह कोशिश की है? मैं इसे काम नहीं कर सका। मैंने सोचा कि आपको "टैग/v0.6.0" का उपयोग करने की आवश्यकता हो सकती है। आपको याद है कि मैंने केवल एक पैकेज पर कोशिश की है ... –

+0

@AlexanderMorley मुझे नहीं पता कि आपको 'टैग /' की आवश्यकता क्यों है। ऐसा लगता है कि बिना मेरे लिए काम करता है। –

+0

हमम मैं जांच करूंगा ... –