我想簡要介紹一下,VCS軟件,並且這樣做我想要生成一組隨機文件,在隨機排列的目錄的數量隨機目錄/文件。我正在用Python編寫腳本,但我的問題是簡要的:如何生成一個隨機目錄樹,每個目錄的平均子目錄數量和每個目錄的文件的廣泛分佈?生成指定的文件和深度
澄清:我不是在比較不同的VCS回購格式(例如SVN VS混帳VS汞柱),但配置軟件與SVN(最終等),涉及的工作拷貝和回購協議。
我想的限制是指定文件的總數(稱爲「N」,大概〜10K-100K)和目錄結構的最大深度(「L」,可能是2-10)。我不在乎在每個級別生成多少個目錄,並且我不希望每個目錄有1個文件,或者每個目錄都有100個目錄。
的分佈是什麼我不知道,因爲我不知道VCS」(SVN尤其是)是否會執行具有非常均勻結構或一種非常扭曲的結構更好或更壞。儘管如此,如果我能想出一個算法不會「大量出現」,那將會很好。
我的第一個想法是:使用一些方法生成的目錄樹,然後均勻地填充文件(每一個目錄同樣,完全不考慮以嵌套)樹。我的信封計算告訴我,如果有'L'級別,每個目錄有'D'個子目錄,每個目錄有大約sqrt(N)個文件,那麼將會有大約D^L個目錄,所以N =〜sqrt(N)*(D^L)=> D =〜N ^(1/2L)。所以現在我有一個'D'的近似值,我如何生成樹?我如何填充文件?
我會很感激只是一些指針,以良好的資源上的算法,我可以使用。我的搜索只發現漂亮的小程序/閃光燈。
我喜歡這個。例如,Keith Packard使用Mozilla的源代碼來測試Subversion和Git:http://keithp.com/blogs/Repository_Formats_Matter/他並不只是採用當前的結賬方式,他使用進口商來獲取整個歷史。結論:「Mozilla CVS存儲庫爲2.7GB,導入Subversion後增長到8.2GB,在Git下縮小到450MB,由於Mozilla的結賬大約爲350MB,所以整個項目的歷史相當不錯(從1998年開始)只有更多的空間。「 – steveha 2009-10-12 07:46:20
文件將包含標題信息和隨機數據(將「攪動」)。 兩個原因產生它(我坦率地承認這是沒有鐵包參數): 1.實事求是地講,我無法下載超過有關數據的MB的100秒以上。除非我在ISP的「免費下載」範圍內(可能,但不太可能)找到某些東西,否則我會很快達到2GB的數據限制。特別是如果我想測試10k-100k以上的文件。 2.最終,我會想跨越VCS方法具有相同的數據(我的猜測也有可能與真實的回購...) 不過,當然值得考慮的比較性能。 – detly 2009-10-12 08:09:54
找到本地的一個源代碼副本?我確定你所在地區有人在大型項目上開發......對假數據進行測試不會給你真正的結果......你會發現只有在使用真實數據時纔會出現異常。 – 2009-10-12 08:26:00