999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

大數據環境下提高動態鏈接庫(DLL)的命中效率

2015-02-26 06:16:10楊海鷹
陰山學刊(自然科學版) 2015年1期

?

大數據環境下提高動態鏈接庫(DLL)的命中效率

楊 海 鷹

(包頭師范學院 物理科學與技術學院,內蒙古 包頭 014030)

摘要:人們對速度的追求沒有止境。計算機從問世那天起,硬件速度、存儲容量一直在快速增加和擴大,保存在計算機中的數據不斷增加并累積,量變引起質變,一個被稱為大數據的時代終于到來,面對可謂爆炸性增長的數據,僅靠提高計算機硬件運作速度難以滿足用戶對“大數據”廣泛深層快速的處理需求,從軟件層面入手,設計合理高效計算機程序,可在不增加硬件成本前提下有效提高系統整體運行效率,不失為事半功倍的措施。遇到巨大量文件數據以及數量可觀且不斷變動的動態庫(DLL)處理模塊,正是這類措施發揮作用的情況。

關鍵詞:DLL;注冊表;動態注冊;被動注冊

1前言

和十年前相比,今天計算機速度顯著提高,容量大幅增加,應用范圍進一步擴大,應用力度加強,同時諸如手機之類智能產品,諸如數碼照相機之類的數碼產品等迅猛普及,隨之而來的是,人們需要計算機處理的數據,無論規模還是數量都急劇膨脹,數據種類趨于多樣化,這種局面被人們稱之為大數據時代。面對數量巨大種類繁多的數據,無論簡單的檢索還是深層的數據挖掘,僅靠提高計算機速度和加大容量還不夠,提高軟件運行效率依然是重要課題。筆者曾參與了相關項目,該項目可以處理種類繁多數量巨大的數據文件,數據處理模塊可由多人獨立設計不定時完成,并以動態鏈接庫形式提供,由于項目的性質,動態庫數量可以很多,有可能超過萬種,甚至更多,項目面臨的問題是:不可能也不應該把眾多的動態庫同時裝入內存,何況一定時間內,許多動態庫不可能被用到,解決這些問題,我們將采用動態注冊,被動注冊等技術,這些技術的核心工作是提高動態庫命中效率。

2基礎知識

為了敘述方便,我們把每次數據處理稱一個任務(Task),數據處理總量用M表示(可認為是數據文件個數),每個數據處理動態庫稱模塊(Model),模塊數量用N表示。

計算機數據一般以文件形式保存在外部存儲器當中,現實中,來源各異大批數據文件的保存并無明顯規律,一些情況下局部范圍里,許多數據文件可能屬同類,當需要處理一個數據文件(也就是數據),系統需要找到至少一個合適的Model,如何盡可能避免遍歷所有Model,以最快的速度找到合適的Model,或者做出沒有合適Model的判斷,這將基于一些基本事實和合理假設,盡管不是完全可靠,多數情況下我們依然可以從文件擴展名獲得文件數據類別信息,處理上一個任務的Model很有可能用于當前Task。一個Model能處理哪些類別的數據是可以預知的,依據這些情況我們可以建立一張表,稱之為注冊表(RegTable),注冊表將Model與文件擴展名、引用計數等對應起來,注冊表的建立可有效提高動態庫命中效率,同時還有其他用途。

圖1 注冊表、數據、Model與驅動系統關系

注冊表、數據、Model、驅動系統和界面關系如圖1所示。實際應用中,數據總量M可以非常龐大,可達數億、數十億或更多,Model總數N也可以很大。若對每個數據m,簡單遍歷N個Model,這將是最為低效。若對M值很大的數據進行遍歷處理,系統效率可能變得十分緩慢而不可接受。這里有一些途徑可有效提高類似工作的效率。

3注冊表與動態注冊、被動注冊

注冊表是基于文件擴展名的。用P表示文件擴展名所代表文件真實類別的概率,多數時候,P值在90%以上或更高,但P值經常不能達到100%。數據m多數情況下可有明確的Model識別,而Model n總有機會被使用到。使用注冊表,驅動系統可以在不打開數據文件和無需調用Model的情況下,以很高概率建立數據和相應可識別數據的Model之間的聯系。

外部存儲器中的數據M不斷變化,Model數量N也是不斷變化的,系統對M和N的數值一無所知,一個Model預知擴展名的文件可能無法由該Model處理,而一個Model沒有預知擴展名的文件可能由該Model處理,因此注冊表只能動態建立,并且必需由系統和Model共同維護。方案如下:每個Model在首次被系統調用(這種調用一般發生在系統遍歷中)時將相關信息加入注冊表,其中最重要的就是Model名稱和它可以識別的所有文件擴展名,該過程就是主動注冊。當系統向Model傳送的數據可以被識別,而文件擴展名并未注冊在該Model項目下,此時系統可以將這種文件擴展名加入注冊表并和該Model聯系起來,這個過程就是被動注冊。RegTable基本情況見表1。

表1:注冊表

有了注冊表,就可以考慮對于一個任務,系統如何借助它及別的措施提高動態庫的命中速度,例如按引用計數項目對注冊表排序就可產生很好的效果。順便指出,隨著注冊表不斷使用,動態庫的命中率會不斷提高,系統運行效率也因此不斷提高。注冊表將動態建立,動態注冊使得Model的安裝變得簡單。

4Model的搜索和命中

驅動系統初次運行,注冊表還未建立,系統不可避免需要經歷一個顛簸期。很快注冊表會被建立起來,我們就基于這種狀況介紹系統如何盡力提高動態庫命中效率。每取得一份數據m,系統首先測試上一份數據使用過的Model是否可以識別現行數據m,若可以,這是最理想的,若不可以,系統將卸載當前Model,而后依據文件擴展名搜索注冊表“注冊文件擴展名”項,如果需要,再搜索“被動注冊文件擴展名”項,正常使用的系統中,這種工作效率很高命中率很大,若命中操作依然沒有成功,系統會遍歷注冊表,依次調用注冊表中所注冊的每一個Model,如果也沒有命中,系統就會采用遍歷保存動態庫的文件目錄,依次調用所有Model,最后作出數據m是否可以被識別處理的決定。系統使用一段時間后,上述兩種遍歷情況出現概率會不斷降低。

為了讓大家有一個更直觀的了解,下邊提供了實現這些設計的C++程序片斷。

bool bResult;

//1.先測試剛用過的Model

if(PluginMain)

{

PluginMain(PLG_FILETYPE,(void*)(&m_strFullPathName), (void*)(&bResult));

if(bResult)

{

PluginMain(PLG_INIT,(void*)(&m_strFullPathName),(void*)(&initInfo));

UpdateViews(this,MSG_FILESELECTED,(CObject*)(&initInfo));

return;

}

}

//卸載上一個Model

if(m_hInstance)

{

::FreeLibrary(m_hInstance);

m_hInstance=NULL;

PluginMain=NULL;

}

//2.查找注冊表

if(SearchRegTable(m_strFullPathName,initInfo))

{

UpdateViews(this,MSG_FILESELECTED,(CObject*)(&initInfo));

return;

}

//3.注冊表廣播

if(BroadcastToRegTable(m_strFullPathName,initInfo))

{

UpdateViews(this,MSG_FILESELECTED,(CObject*)(&initInfo));

return;

}

//4.Model目錄廣播

if(BroadcastToPlugins(m_strFullPathName,initInfo))

{

UpdateViews(this,MSG_FILESELECTED,(CObject*)(&initInfo));

return;

}

//選擇結束,無可用Model

說明:PluginMain是被調用動態庫的句柄,PLG_FILETYPE是提請Model完成數據m的識別標記,PLG_INIT是提請Model進行初始化工作的標記。

我們可以對上面程序作必要的數學分析。這里用P′表示數據識別概率,用n表示可以識別的數據份數,用s表示已操作的數據總數(即已操作的文件總數),那么:

用E表示動態庫命中效率,用t表示時間,則:

一般情況下P′在程序第2步“查找注冊表”命中測試中達到最大值,這種情況所用時間最短,E值也就是命中效率最高。而第3和第4步遍歷操作會使P′減小,所耗時間顯著增加,E值迅速降低,因此可以看出,注冊表的引入對提高動態庫命中效率有不可低估的作用。

5結語

以上討論針對的是迅速找到可以識別處理數據m的model這種情況,因此無論搜索注冊表,還是遍歷注冊表注冊的動態庫或遍歷動態庫目錄,都是以找到第一個可用Model為前提的,事實上,已注冊的Model可能不止一個可以識別數據m,動態庫目錄的情況也是類似,我們也可以將徹底遍歷作為選項提供給用戶,也就是說,在發生遍歷的情況下,要用每一個可以識別數據m的Model對數據加以處理,當然,這類事情與我們大數據背景下提高動態庫命中效率需要相悖,此處不再作進一步探討。不同環境下的注冊表和動態庫目錄是可以合并的,一些情況下,這可以成為迅速提高動態庫命中率的捷徑。

〔參考文獻〕

[1]Bjarne Stroustrup.C++程序設計語言(特別版)[M].北京:機械工業出版社,2010.

[2]Jeff Prosise.MFC Windows程序設計(第2版)[M].北京:清華大學出版社,2001.

[3]Charles Petzold.Windows程序設計(第5版)[M].北京:北京大學出版社,1999.

Improve the Dynamic Link Library Under the Big Data Environment (DLL) Hit Efficiency

YANG Hai-ying

(Faculty of Physical Science and Technology,Baotou Teachers College,Baotou 014030)

Abstract:People never-ending quest for speed.After the advent of the computer,Hardware speed and storage capacity has been rapidly increasing and expanding,Data stored in the computer continues to increase and accumulate,The quantitative change cause a qualitative change,Big Data era has finally arrived,Faced with the explosive growth of data,Improve the speed of computer hardware alone can not meet the needs of users to handle "big data" extensive deep fast processing needs,Starting from the software level,Design a rational and efficient computer program,Can be provided without additional hardware cost effectively improve the efficiency of the overall system,Is a very effective measure.Faced with a huge amount of file data,And a great number of Dynamic library (DLL) processing module,It is the case that such measures play a role.

Key words:DLL;Registry;Dynamic registration;Passive registration

中圖分類號:TP311

文獻標識碼:A

文章編號:1004-1869(2015)01-0023-03

作者簡介:楊海鷹(1965-),內蒙古包頭人,副教授,研究方向:計算機語言及軟件設計。

收稿日期:2014-10-18

主站蜘蛛池模板: 国产精品久久久久久久伊一| 超清人妻系列无码专区| 亚洲成人黄色在线| 99精品视频九九精品| 五月婷婷亚洲综合| 国产精品露脸视频| 亚洲视频欧美不卡| 欧美精品xx| 在线看免费无码av天堂的| 国产精品综合色区在线观看| 毛片基地视频| 在线观看国产黄色| 99在线视频免费观看| 欧美午夜精品| 国产成人精品一区二区三在线观看| 国内毛片视频| 在线精品视频成人网| 69av免费视频| 成人国产精品2021| 福利国产微拍广场一区视频在线| 亚洲人网站| 亚洲毛片在线看| 国产乱子伦一区二区=| 亚洲美女一级毛片| 亚洲欧美另类中文字幕| 夜夜操国产| 丰满少妇αⅴ无码区| 永久免费av网站可以直接看的 | 波多野结衣一区二区三区四区视频| 国产精品第5页| 沈阳少妇高潮在线| 日韩午夜伦| 五月天天天色| 亚洲综合色吧| 在线色国产| 久久久噜噜噜| 精品伊人久久大香线蕉网站| 亚洲综合亚洲国产尤物| 老司机午夜精品网站在线观看| 日日碰狠狠添天天爽| 国产av一码二码三码无码| 日韩无码视频专区| 亚洲永久免费网站| 自偷自拍三级全三级视频 | 久久久精品国产SM调教网站| 久久永久精品免费视频| 亚洲女同一区二区| 中文字幕欧美日韩| 欧美亚洲一二三区| 性视频久久| 超碰aⅴ人人做人人爽欧美| 一边摸一边做爽的视频17国产| 国产在线日本| 亚洲国产成人精品无码区性色| 国产成人精品一区二区免费看京| 国产视频欧美| 国产乱子精品一区二区在线观看| 国产亚洲欧美在线中文bt天堂| 久久精品人妻中文系列| 国产菊爆视频在线观看| 日本色综合网| 免费一极毛片| 欧美日韩在线成人| 无码中文字幕精品推荐| 亚洲精品动漫| 国产精品.com| 国产a v无码专区亚洲av| 中文字幕 91| 色久综合在线| 97se亚洲| 亚洲第一页在线观看| 国内老司机精品视频在线播出| 在线毛片免费| www精品久久| 久久精品视频亚洲| 亚欧美国产综合| 午夜日b视频| 久久五月视频| 深爱婷婷激情网| 91亚洲精品第一| 欧美日韩中文国产va另类| 国产无码精品在线播放|