達(dá)到一定的數(shù)量時,如編號為8的情形下,運行速度不會有較大的程度。所W,在引入 預(yù)讀緩寫機制時,要注意線程總數(shù)及線程的分配兩個問題。一般而言,分配線程應(yīng)有W下原 貝1J:根據(jù)硬件情況,合理分配線程總個數(shù);運行時間較長的模塊應(yīng)該對應(yīng)較多個線程個數(shù); 為了實現(xiàn)緩寫的功能,并且更好地實現(xiàn)動態(tài)使用內(nèi)存的目的,應(yīng)盡量減少輸出模塊的線程 數(shù),防止輸出模塊占用過多的資源。
[0084] 對應(yīng)于上述方法本發(fā)明還公開了一種基于預(yù)讀緩寫的數(shù)據(jù)分析處理系統(tǒng),所述 系統(tǒng)包括數(shù)據(jù)輸入模塊、數(shù)據(jù)計算模塊W及數(shù)據(jù)輸出模塊;所述數(shù)據(jù)輸入模塊與所述數(shù)據(jù) 計算模塊連接,用于讀入部分待輸入數(shù)據(jù)并傳遞給所述數(shù)據(jù)計算模塊;所述數(shù)據(jù)計算模塊 與所述數(shù)據(jù)輸出模塊連接,利用相應(yīng)的計算方法根據(jù)所述數(shù)據(jù)輸入模塊傳遞的所述待輸入 數(shù)據(jù)進(jìn)行計算得到相應(yīng)的計算結(jié)果并傳遞給所述數(shù)據(jù)輸出模塊,并由所述數(shù)據(jù)輸出模塊進(jìn) 行輸出;其中,所述數(shù)據(jù)輸入模塊讀入所述部分待輸入數(shù)據(jù)后,所述數(shù)據(jù)輸入模塊、所述數(shù) 據(jù)計算模塊W及所述數(shù)據(jù)輸出模塊同時工作,直到所述待輸入數(shù)據(jù)全部讀入所述數(shù)據(jù)輸入 模塊,所述數(shù)據(jù)輸入模塊停止工作;直到所有所述計算結(jié)果全部輸出,所述數(shù)據(jù)輸出模塊停 止工作。
[0085] 進(jìn)一步地,所述系統(tǒng)還包括標(biāo)志位設(shè)置模塊,其設(shè)置了標(biāo)識所述待輸入數(shù)據(jù)全部 輸入的第一標(biāo)志位、標(biāo)識利用對應(yīng)的計算方法計算完所有的所述待輸入數(shù)據(jù)的第二標(biāo)志位 W及標(biāo)識所述計算結(jié)果全部輸出的第=標(biāo)志位。
[0086] 進(jìn)一步地,所述數(shù)據(jù)輸入模塊包括輸入判斷子模塊,所述輸入判斷子模塊在所述 數(shù)據(jù)輸入模塊讀入部分待輸入數(shù)據(jù)之前,根據(jù)所述第一標(biāo)志位,判斷是否已經(jīng)讀入了全部 的所述待輸入數(shù)據(jù),若是則所述數(shù)據(jù)輸入模塊不再工作,否則由所述數(shù)據(jù)輸入模塊讀入所 述待輸入數(shù)據(jù)。
[0087] 進(jìn)一步地,所述數(shù)據(jù)計算模塊包括計算前判斷子模塊,所述計算前判斷子模塊在 所述數(shù)據(jù)計算模塊利用相應(yīng)的計算方法根據(jù)所述數(shù)據(jù)輸入模塊傳遞的所述待輸入數(shù)據(jù)進(jìn) 行計算之前,判斷是否有所述待輸入數(shù)據(jù)讀入,若有則所述數(shù)據(jù)計算模塊利用相應(yīng)的計算 方法根據(jù)讀入的所述待輸入數(shù)據(jù)進(jìn)行計算,得到對應(yīng)的所述計算結(jié)果。所述計算前判斷子 模塊在判斷是否有所述待輸入數(shù)據(jù)讀入之前首先根據(jù)所述第二標(biāo)志位,判斷是否已經(jīng)利用 對應(yīng)的計算方法計算完所有的所述待輸入數(shù)據(jù),若是則不再執(zhí)行所述步驟S21,否則執(zhí)行所 述步驟S21。
[0088] 進(jìn)一步地,所述數(shù)據(jù)計算模塊包括輸出子模塊,所述輸出子模塊判斷是否得到了 對應(yīng)的所述計算結(jié)果,若是則進(jìn)行步驟S24,否則等待所述步驟S22執(zhí)行,直到得到對應(yīng)的 所述計算結(jié)果。所述輸出子模塊在判斷是否得到了對應(yīng)的所述計算結(jié)果之前首先根據(jù)所述 第=標(biāo)志位,判斷是否已經(jīng)輸出了所有的所述計算結(jié)果,若是則不再執(zhí)行所述步驟S23,否 則執(zhí)行所述步驟S23。
[0089] 綜上所述,在預(yù)讀緩寫機制中,預(yù)讀的目的是,在全部計算開始前,將部分計算過 程所需要的數(shù)據(jù)從本地硬盤預(yù)讀入內(nèi)存中,W滿足部分計算的運行。在進(jìn)行計算的同時,將 剩余的所需數(shù)據(jù)讀入內(nèi)存,W滿足計算的循序地進(jìn)行,并將已經(jīng)不再需要輸入數(shù)據(jù)所占的 內(nèi)存空間釋放,提高內(nèi)存的利用率。緩寫的目的是,利用存儲空閑時間,提前將生產(chǎn)的數(shù)據(jù) 結(jié)果遷移保存至本地硬盤,可減輕批量輸出造成的存儲負(fù)擔(dān)同時提高數(shù)據(jù)的寫入速度。預(yù) 讀緩寫機制的引入可W提高程序的運行效率75%,達(dá)到動態(tài)使用內(nèi)存的目的。
[0090] W上實施方式僅用于說明本發(fā)明,而非對本發(fā)明的限制。盡管參照實施例對本發(fā) 明進(jìn)行了詳細(xì)說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解,對本發(fā)明的技術(shù)方案進(jìn)行各種組合、 修改或者等同替換,都不脫離本發(fā)明技術(shù)方案的精神和范圍,均應(yīng)涵蓋在本發(fā)明的權(quán)利要 求范圍當(dāng)中。
【主權(quán)項】
1. 一種基于預(yù)讀緩寫的數(shù)據(jù)分析處理方法,其特征在于,所述方法包括: 51、 讀入部分待輸入數(shù)據(jù); 52、 利用相應(yīng)的計算方法根據(jù)所述步驟Sl中讀入的所述待輸入數(shù)據(jù)進(jìn)行計算,得到對 應(yīng)的計算結(jié)果,并且將所述計算結(jié)果進(jìn)行輸出; 第一次執(zhí)行完所述步驟Sl之后,所述步驟Sl和S2同時執(zhí)行,直到所述待輸入數(shù)據(jù)全 部讀入所述步驟Sl停止執(zhí)行;直到所有所述計算結(jié)果全部輸出后所述步驟S2停止執(zhí)行。2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法設(shè)置了標(biāo)識所述待輸入數(shù)據(jù)全 部輸入的第一標(biāo)志位、標(biāo)識利用對應(yīng)的計算方法計算完所有的所述待輸入數(shù)據(jù)的第二標(biāo)志 位以及標(biāo)識所述計算結(jié)果全部輸出的第三標(biāo)志位。3. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟Sl在讀入所述待輸入數(shù)據(jù)之前 還包括以下步驟: 根據(jù)所述第一標(biāo)志位,判斷是否已經(jīng)讀入了全部的所述待輸入數(shù)據(jù),若是,則不再執(zhí)行 所述步驟Sl,否則執(zhí)行所述步驟Sl。4. 根據(jù)權(quán)利要求2所述的方法,其特征在于,所述步驟S2包括以下步驟: 521、 判斷是否有所述待輸入數(shù)據(jù)讀入,若有執(zhí)行步驟S22,否則執(zhí)行所述步驟Sl; 522、 利用相應(yīng)的計算方法根據(jù)所述步驟21中讀入的所述待輸入數(shù)據(jù)進(jìn)行計算; 523、 判斷是否得到了對應(yīng)的所述計算結(jié)果,若是則進(jìn)行步驟S24,否則等待所述步驟 S22執(zhí)行,直到得到對應(yīng)的所述計算結(jié)果; 524、 將所述計算結(jié)果進(jìn)行輸出。5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟S21執(zhí)行之前還包括以下步驟: 根據(jù)所述第二標(biāo)志位,判斷是否已經(jīng)利用對應(yīng)的計算方法計算完所有的所述待輸入數(shù) 據(jù),若是則不再執(zhí)行所述步驟S21,否則執(zhí)行所述步驟S21。6. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟S23執(zhí)行之前還包括以下步驟: 根據(jù)所述第三標(biāo)志位,判斷是否已經(jīng)輸出了所有的所述計算結(jié)果,若是則不再執(zhí)行所 述步驟S23,否則執(zhí)行所述步驟S23。7. -種基于預(yù)讀緩寫的數(shù)據(jù)分析處理系統(tǒng),其特征在于,所述系統(tǒng)包括數(shù)據(jù)輸入模塊、 數(shù)據(jù)計算模塊以及數(shù)據(jù)輸出模塊; 所述數(shù)據(jù)輸入模塊與所述數(shù)據(jù)計算模塊連接,用于讀入部分待輸入數(shù)據(jù)并傳遞給所述 數(shù)據(jù)計算模塊; 所述數(shù)據(jù)計算模塊與所述數(shù)據(jù)輸出模塊連接,利用相應(yīng)的計算方法根據(jù)所述數(shù)據(jù)輸入 模塊傳遞的所述待輸入數(shù)據(jù)進(jìn)行計算得到相應(yīng)的計算結(jié)果并傳遞給所述數(shù)據(jù)輸出模塊,并 由所述數(shù)據(jù)輸出模塊進(jìn)行輸出; 其中,所述數(shù)據(jù)輸入模塊讀入所述部分待輸入數(shù)據(jù)后,所述數(shù)據(jù)輸入模塊、所述數(shù)據(jù) 計算模塊以及所述數(shù)據(jù)輸出模塊同時工作,直到所述待輸入數(shù)據(jù)全部讀入所述數(shù)據(jù)輸入模 塊,所述數(shù)據(jù)輸入模塊停止工作;直到所有所述計算結(jié)果全部輸出,所述數(shù)據(jù)輸出模塊停止 工作。8. 根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括標(biāo)志位設(shè)置模塊,其設(shè)置 了標(biāo)識所述待輸入數(shù)據(jù)全部輸入的第一標(biāo)志位、標(biāo)識利用對應(yīng)的計算方法計算完所有的所 述待輸入數(shù)據(jù)的第二標(biāo)志位以及標(biāo)識所述計算結(jié)果全部輸出的第三標(biāo)志位。9. 根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述數(shù)據(jù)輸入模塊包括輸入判斷子模塊, 所述輸入判斷子模塊在所述數(shù)據(jù)輸入模塊讀入部分待輸入數(shù)據(jù)之前,根據(jù)所述第一標(biāo)志 位,判斷是否已經(jīng)讀入了全部的所述待輸入數(shù)據(jù),若是則所述數(shù)據(jù)輸入模塊不再工作,否則 由所述數(shù)據(jù)輸入模塊讀入所述待輸入數(shù)據(jù)。10. 根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述數(shù)據(jù)計算模塊包括計算前判斷子模 塊,所述計算前判斷子模塊在所述數(shù)據(jù)計算模塊利用相應(yīng)的計算方法根據(jù)所述數(shù)據(jù)輸入模 塊傳遞的所述待輸入數(shù)據(jù)進(jìn)行計算之前,判斷是否有所述待輸入數(shù)據(jù)讀入,若有則所述數(shù) 據(jù)計算模塊利用相應(yīng)的計算方法根據(jù)讀入的所述待輸入數(shù)據(jù)進(jìn)行計算,得到對應(yīng)的所述計 算結(jié)果。
【專利摘要】本發(fā)明公開了一種基于預(yù)讀緩寫的數(shù)據(jù)分析處理方法及系統(tǒng),本發(fā)明中首先讀入一部分待輸入數(shù)據(jù);然后根據(jù)輸入的數(shù)據(jù)先行進(jìn)行計算,同時讀入剩余的一部分或全部的待輸入數(shù)據(jù),繼續(xù)進(jìn)行計算;同時,當(dāng)有計算結(jié)果可以進(jìn)行輸出的時候,就先行將此部分結(jié)果輸出,這種處理方式通過多線程編程,并行運行,以在最短的時間內(nèi)完成程序的運行,達(dá)到內(nèi)存的動態(tài)高效的使用;這種預(yù)讀緩寫機制的引入最大可以提高75%的程序運行效率,并且避免了數(shù)據(jù)在批量輸入和輸出時造存儲堵塞。
【IPC分類】G06F3/06
【公開號】CN105183366
【申請?zhí)枴緾N201510398862
【發(fā)明人】趙祥, 崔嬌, 徐帥, 魏紅, 梁順林
【申請人】北京師范大學(xué)
【公開日】2015年12月23日
【申請日】2015年7月8日