分布式編譯的方法及系統的制作方法
【專利摘要】本發明公開了一種分布式編譯的方法及系統,涉及信息處理領域,用于解決軟件代碼編譯效率低導致編譯時間長的問題。本發明提供的方法具體包括:采用各從服務機獨立確定需要編譯的待編譯代碼片段的方式,將分配任務的耗時平均分擔到了各個從服務機,從而提高了軟件編譯的效率,縮短編譯時間。本發明實施例主要用于軟件開發的過程中。
【專利說明】分布式編譯的方法及系統
【技術領域】
[0001]本發明涉及信息處理領域,尤其涉及一種分布式編譯的方法及系統。
【背景技術】
[0002]在軟件設計過程中,可將單個軟件按功能等特征劃分為不同的子模塊;在對軟件的開發和編譯過程中,單個軟件的編譯可被稱為一個母工程,而單個子模塊則對應為一個子工程;傳統的編譯方式是在一臺計算機上串行的將所有子工程編譯完成后再將所有編譯結果組合,生成最終可供用戶使用的軟件產品;隨著產品功能不斷增加和完善,軟件模塊在不斷的增加,軟件規模也在不斷的增大,一次全編譯的時間可能多達數小時,這嚴重制約了產品的開發效率。
[0003]針對上述問題,現有技術中提出了分布式編譯的方法,具體包括:
[0004]服務器將源碼發送到各客戶機,并為每個客戶機分配編譯任務,然后每個客戶機根據分配好的編譯任務進行編譯,并將編譯結果反饋給服務器,最后服務器對各個客戶機反饋的編譯結果進行整理。在實現上述分布式編譯的過程中,發明人發現現有技術中至少存在如下問題:
[0005]所有編譯任務需要由服務器統一進行分配,服務器負擔重,影響編譯效率。
【發明內容】
[0006]本發明的實施例提供一種分布式編譯的方法及系統,用于提高軟件編譯的效率,縮短編譯時間。
[0007]為達到上述目的,本發明的實施例采用如下技術方案:
[0008]本發明實施例提供了一種分布式編譯的方法,包括:
[0009]主編譯機獲取待編譯代碼,并將所述待編譯代碼存儲至存儲器;
[0010]至少兩個從編譯機根據各自的標識以及編譯所述待編譯代碼的從編譯機總數,確定各自需要編譯的待編譯代碼片段;
[0011]所述至少兩個從編譯機從所述存儲器讀取各自需要編譯的待編譯代碼片段并進行編譯,得到各自的編譯信息;
[0012]所述主編譯機對所述至少兩個從編譯機的編譯信息進行匯總。
[0013]本發明實施例還提供了一種分布式編譯的系統,包括:
[0014]服務器以及能夠與所述服務器直接通信的電子終端,所述電子終端包括主編譯機、至少兩個從編譯機以及存儲器,所述主編譯機能夠單獨與所述存儲器進行通信,每個從編譯機能夠單獨與存儲器進行通信;
[0015]其中,所述主編譯機用于獲取待編譯代碼,并將所述待編譯代碼存儲至存儲器;以及對所述至少兩個從編譯機的編譯信息進行匯總;
[0016]所述至少兩個從編譯機,用于根據各自的標識以及編譯所述待編譯代碼的從編譯機總數,確定各自需要編譯的待編譯代碼片段;以及從所述存儲器讀取各自需要編譯的待編譯代碼片段并進行編譯,得到各自的編譯信息;
[0017]所述存儲器,用于存儲所述待編譯代碼。
[0018]本發明實施例提供的一種分布式編譯的方法及系統,采用了各從服務機獨立確定需要編譯的待編譯代碼片段的方式,將分配任務的耗時平均分擔到了各個從服務機,相比由服務器統一分配任務的方式,減輕了服務器的負荷,極大的縮短了任務分配的耗時,從而提高了軟件編譯的效率,縮短編譯時間。
【專利附圖】
【附圖說明】
[0019]為了更清楚地說明本發明實施例或現有技術中的技術方案,下面將對實施例或現有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他的附圖。
[0020]圖1為本發明實施例提供的一種分布式編譯的流程交互圖;
[0021]圖2為本發明實施例提供的一種分布式編譯的局部方法流程的示意圖;
[0022]圖3為本發明實施例提供的另一種分布式編譯的流程交互圖;
[0023]圖4為本發明實施例提供的一種分布式編譯的系統的組成框圖。
【具體實施方式】
[0024]下面將結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明中的實施例,本領域普通技術人員在沒有作出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明保護的范圍。
[0025]本發明實施例提供了一種分布式編譯方法,具體可應用于本發明提供的一種分布式編譯系統,該系統包括服務器以及能夠與所述服務器直接通信的電子終端,所述電子終端包括主編譯機、至少兩個從編譯機以及存儲器,所述主編譯機可單獨與所述存儲器進行通信,每個從編譯機可單獨與所述存儲器進行通信。
[0026]在此系統中,服務器可優選使用web服務器,電子終端可優選使用計算機,主編譯機和從編譯機可優選電子終端通過虛擬構建的方式得到,存儲器優選使用計算機內置物理硬盤即可。
[0027]在此需要說明的是,存儲器若使用主編譯機及從編譯機所在的計算機內置物理硬盤,則在執行下述方法流程之前,需要將所述主編譯機和所述至少兩個從編譯機分別與存儲器建立共享連接。
[0028]基于上述系統,本發明實施例提供的分布式編譯方法,其交互流程如圖1所示,具體包括:
[0029]101、主編譯機獲取待編譯代碼,并將所述待編譯代碼存儲至存儲器。
[0030]在本實施例中,所述待編譯代碼指的是在軟件開發過程中需要各個編譯機進行編譯的軟件產品代碼。
[0031]102、至少兩個從編譯機根據各自的標識以及編譯所述待編譯代碼的從編譯機總數,確定各自需要編譯的待編譯代碼片段。[0032]在本實施例中所描述的從編譯機的標識可以通過數字序號、字母序號等類似的標識來實現。
[0033]在本實施例中所描述的編譯所述待編譯代碼的從編譯機總數指的是當前被服務器分配去編譯待編譯代碼的所有從編譯機的總數量。
[0034]另外,需要說明的是,如圖1所示的交互流程中僅提供了從編譯機I和從編譯機2與其它設備的交互流程,并未示出其它從編譯機參與的交互流程,其目的在于提供簡潔明了的交互流程示意圖,但圖1所示內容不作為對從編譯機數量的限定。其它從編譯機與主編譯機的交互流程與從編譯機I和2的相類似,本發明所屬【技術領域】的技術人員可以直接做出推斷,故本實施例對此不再贅述。
[0035]103、所述至少兩個從編譯機從所述存儲器讀取各自需要編譯的待編譯代碼片段并進行編譯,得到各自的編譯信息。
[0036]本實施例使用的具體編譯方法可參照業內常用的編譯工具和相應的編譯方法,本實施例對此不再贅述。
[0037]104、所述主編譯機對所述至少兩個從編譯機的編譯信息進行匯總。
[0038]本實施例在此描述的匯總流程中使用的編譯信息具體為所有從編譯機編譯得到的工程對象文件、相應的編譯告警信息以及編譯錯誤信息。
[0039]在本實施方式中,通過采用各個從服務機獨立確定需要編譯的待編譯代碼片段的方式,將分配任務的耗時平均分擔到了各個從服務機,相比由服務器統一分配任務的方式,極大的縮短了任務分配的耗時,從而提高了軟件編譯的效率,縮短編譯時間。
[0040]進一步為了提高編譯效率,縮短編譯時間,本發明實施例的一種實現方式提供了如下設置,具體為:
[0041]每個從編譯機需要編譯的待編譯代碼片段為待編譯代碼的一部分,并且每個從編譯機需要編譯的待編譯代碼片段大小相同。
[0042]其中,每個從編譯機需要編譯的待編譯代碼片段大小相同指的是每個從編譯機需要編譯的待編譯代碼片段的文件數量相同,或者是每個從編譯機需要編譯的待編譯代碼片段的字節總數相同等。
[0043]基于此設置,如圖2所示,在本實現方式中針對步驟102提供了具體的實現流程,包括:
[0044]1021、所述至少兩個從編譯機根據所述編譯所述待編譯代碼的從編譯機總數,對所述待編譯代碼進行平均分割,并對平均分割得到的待編譯代碼片段依次進行編號。
[0045]其中分割的基礎可以是待編譯代碼的總文件數或者是總字節數。相應的,平均分割得到的待編譯代碼片段就是多個連續文件組成的文件組或者是多個連續字節組成的字節段。
[0046]對這些待編譯代碼片段分配編號時,一般需要使用每個從編譯機的標識作為編號。
[0047]1022、所述至少兩個從編譯機根據各自的標識,確定與標識匹配的編號,然后根據確定的編號確定各自需要編譯的待編譯代碼片段。
[0048]在本實施例中,標識與編號的匹配關系可以設置為至少以下幾種規則:
[0049]第一種規則:標識與編號完全相同,例如,標識為1,則與標識I匹配的編號就是I ;標識為2,則與標識2匹配的編號就是2。
[0050]第二種規則:標識與編號相差一個固定差值,例如,標識為1,則與標識I匹配的編號就是3 ;標識為2,則與標識2匹配的編號就是4。其中,固定差值為2。
[0051]第三種規則:標識與編號符合特定的對應關系,例如,標識為1,則與標識I匹配的編號就是a ;標識為2,則與標識2匹配的編號就是b ;標識為3則與標識3匹配的編號就是
Co
[0052]以上三種規則只是提供優選的實現方式,標識與編號之間的對應關系可根據實際需要自行設置,本發明對此不進行限制。
[0053]在實施方式中,通過對待編譯代碼進行片段劃分,并要求每個待編譯代碼片段的大小相同,以使得每個從編譯機需要編譯的工程量相同,繼而讓每個從編譯機的編譯負擔相同,避免了因編譯任務劃分不平衡而出現水桶短板的現象出現,有效地提高了編譯效率,縮短了編譯時間。
[0054]為了方便對編譯工程的統一管理和用戶調用,因此需要將待編譯代碼以及編譯結果等信息放置在服務器中,基于此設置,本發明實施例的另一實現方式,具體流程如圖3所示,包括:
[0055]301、主編譯機從服務器上下載所述待編譯代碼,并將所述待編譯代碼存儲至存儲器。
[0056]在本實施方式中,主編譯機從服務器下載待編譯代碼一般需要服務器進行腳本調用來啟動,具體的腳本調用方式可以使用telnet技術的相關實現方式,本發明在此不多做描述。
[0057]而在服務器啟動主編譯機下載功能之前,若同時存在多個編譯任務需要進行處理,則需要服務器根據自身情況或者編譯任務本身的優先處理要求等因素,對該多個編譯任務設置待處理隊列,并依照隊列順序依次觸發主編譯機下載待編譯代碼。
[0058]302、至少兩個從編譯機根據各自的標識以及編譯所述待編譯代碼的從編譯機總數,確定各自需要編譯的待編譯代碼片段。
[0059]與步驟301類似,步驟302也需要服務器使用telnet技術來觸發從編譯機啟動此流程。
[0060]303、所述至少兩個從編譯機從所述存儲器讀取各自需要編譯的待編譯代碼片段并進行編譯,得到各自的編譯信息。
[0061]304、所述至少兩個從編譯機將各自的編譯信息發送至所述服務器。
[0062]305、所述主編譯機從所述服務器下載所述至少兩個從編譯機的編譯信息,并對下載到的編譯信息進行匯總。
[0063]與步驟301類似,步驟305也需要服務器使用telnet技術來觸發主編譯機啟動此流程。
[0064]在本實施方式中,通過將待編譯代碼、編譯結果等信息放置在服務器中,能夠方便用戶進行統一管理和調用,有利于系統配置和維護。
[0065]本發明另一實施例提供了一種分布式編譯的系統,可用于實現前述如圖1至圖3任意一幅所示的方法流程,該系統可如圖4所示,具體包括服務器41以及能夠與所述服務器41直接通信的電子終端42,所述電子終端包括主編譯機43、至少兩個從編譯機44以及存儲器45,所述主編譯機43可單獨與所述存儲器45進行通信,每個從編譯機44可單獨與所述存儲器45進行通信。需要說明的是,在圖4中,僅標示了兩個個從編譯機,其目的在于提供簡潔明了的裝置示意圖,但圖4所示數量不作為對從編譯機數量的限定。
[0066]其中,所述主編譯機43用于獲取待編譯代碼,并將所述待編譯代碼存儲至存儲器;以及對所述至少兩個從編譯機44的編譯信息進行匯總。
[0067]所述至少兩個從編譯機44,用于根據各自的標識以及編譯所述待編譯代碼的從編譯機總數,確定各自需要編譯的待編譯代碼片段;以及從所述存儲器45讀取各自需要編譯的待編譯代碼片段并進行編譯,得到各自的編譯信息。
[0068]所述存儲器45,用于存儲所述待編譯代碼。
[0069]可選的是,所述存儲器45為所述電子終端42共享訪問的物理存儲器。
[0070]可選的是,所述存儲器45分別與所述主編譯機和所述至少兩個從編譯機建立共
享連接。
[0071]可選的是,所述至少兩個從編譯機44還具體用于根據所述編譯所述待編譯代碼的從編譯機總數,對所述待編譯代碼進行平均分割,并對平均分割得到的待編譯代碼片段依次進行編號;根據各自的標識,確定與標識匹配的編號,然后根據確定的編號確定各自需要編譯的待編譯代碼片段。
[0072]可選的是,所述至少兩個從編譯機44,還用于將各自的編譯信息發送至所述服務器41。
[0073]所述主編譯機43還用于從所述服務器41上下載所述待編譯代碼;以及用于從所述服務器41下載所述至少兩個從編譯機44的編譯信息,并對下載到的編譯信息進行匯總。
[0074]在上述實施方式中,通過采用各個從服務機獨立確定需要編譯的待編譯代碼片段的方式,將分配任務的耗時平均分擔到了各個從服務機,相比由服務器統一分配任務的方式,極大的縮短了任務分配的耗時,從而提高了軟件編譯的效率,縮短編譯時間。
[0075]并且,本發明實施例還通過虛擬構建的方式將一臺電子終端構建成一個主編譯機和至少兩個從編譯機,將待編譯代碼存放在電子終端的同一個物理存儲器中,避免了各個從編譯機重新下載待編譯代碼的步驟,從而有效提高了編譯效率,縮短了編譯時間。
[0076]并且,本發明實施例還通過對待編譯代碼進行片段劃分,并要求每個待編譯代碼片段的大小相同,以使得每個從編譯機需要編譯的工程量相同,繼而讓每個從編譯機的編譯負擔相同,避免了因編譯任務劃分不平衡而出現水桶短板的現象出現,有效地提高了編譯效率,縮短了編譯時間
[0077]并且,本發明實施例還通過將待編譯代碼、編譯結果等信息放置在服務器中,能夠方便用戶進行統一管理和調用,有利于系統配置和維護。
[0078]通過以上的實施方式的描述,所屬領域的技術人員可以清楚地了解到本發明可借助軟件加必需的通用硬件的方式來實現,當然也可以通過硬件,但很多情況下前者是更佳的實施方式。基于這樣的理解,本發明的技術方案本質上或者說對現有技術做出貢獻的部分可以以軟件產品的形式體現出來,該計算機軟件產品存儲在可讀取的存儲介質中,如計算機的軟盤,硬盤或光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述的方法。
[0079]以上所述,僅為本發明的【具體實施方式】,但本發明的保護范圍并不局限于此,任何熟悉本【技術領域】的技術人員在本發明揭露的技術范圍內,可輕易想到變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應以所述權利要求的保護范圍為準。
【權利要求】
1.一種分布式編譯的方法,其特征在于,包括: 主編譯機獲取待編譯代碼,并將所述待編譯代碼存儲至存儲器; 至少兩個從編譯機根據各自的標識以及編譯所述待編譯代碼的從編譯機總數,確定各自需要編譯的待編譯代碼片段; 所述至少兩個從編譯機從所述存儲器讀取各自需要編譯的待編譯代碼片段并進行編譯,得到各自的編譯信息; 所述主編譯機對所述至少兩個從編譯機的編譯信息進行匯總。
2.根據權利要求1所述的方法,其特征在于,所述待編譯代碼片段為所述待編譯代碼的一部分,并且每個從編譯機需要編譯的待編譯代碼片段大小相同。
3.根據權利要求2所述的方法,其特征在于,所述至少兩個從編譯機根據各自的標識以及編譯所述待編譯代碼的從編譯機總數,確定各自需要編譯的待編譯代碼片段包括: 所述至少兩個從編譯機根據所述編譯所述待編譯代碼的從編譯機總數,對所述待編譯代碼進行平均分割,并對平均分割得到的待編譯代碼片段依次進行編號; 所述至少兩個從編譯機根據各自的標識,確定與標識匹配的編號,然后根據確定的編號確定各自需要編譯的待編譯代碼片段。·
4.根據權利要求1至3任意一項所述的方法,其特征在于,所述主編譯機獲取待編譯代碼包括: 所述主編譯機從服務器下載所述待編譯代碼; 則在所述至少兩個從編譯機從所述存儲器讀取各自需要編譯的待編譯代碼片段并進行編譯,得到各自的編譯信息之后,還包括: 所述至少兩個從編譯機將各自的編譯信息發送至所述服務器; 則所述主編譯機對所述至少兩個從編譯機的編譯信息進行匯總包括: 所述主編譯機從所述服務器下載所述至少兩個從編譯機的編譯信息,并對下載到的編譯信息進行匯總。
5.根據權利要求4所述的方法,其特征在于,在所述主編譯機獲取待編譯代碼,并將所述待編譯代碼存儲至存儲器之前,還包括: 將所述主編譯機和所述至少兩個從編譯機分別與存儲器建立共享連接。
6.一種分布式編譯的系統,其特征在于,包括服務器以及與所述服務器直接通信的電子終端,所述電子終端包括主編譯機、至少兩個從編譯機以及存儲器,所述主編譯機能夠單獨與所述存儲器進行通信,每個從編譯機能夠單獨與存儲器進行通信; 其中,所述主編譯機用于獲取待編譯代碼,并將所述待編譯代碼存儲至存儲器;以及對所述至少兩個從編譯機的編譯信息進行匯總; 所述至少兩個從編譯機,用于根據各自的標識以及編譯所述待編譯代碼的從編譯機總數,確定各自需要編譯的待編譯代碼片段;以及從所述存儲器讀取各自需要編譯的待編譯代碼片段并進行編譯,得到各自的編譯信息; 所述存儲器,用于存儲所述待編譯代碼。
7.根據權利要求6所述的系統,其特征在于,所述存儲器為所述電子終端共享訪問的物理存儲器。
8.根據權利要求6所述的系統,其特征在于,所述存儲器分別與所述主編譯機和所述至少兩個從編譯機建立共享連接。
9.根據權利要求6所述的系統,其特征在于,所述至少兩個從編譯機還具體用于根據所述編譯所述待編譯代碼的從編譯機總數,對所述待編譯代碼進行平均分割,并對平均分割得到的待編譯代碼片段依次進行編號;根據各自的標識,確定與標識匹配的編號,然后根據確定的編號確定各自需要編譯的待編譯代碼片段。
10.根據權利要求6至10任意一項所述的系統,其特征在于,所述至少兩個從編譯機,還用于將各自的編譯信息發送至所述服務器; 所述主編譯機還用于從所述服務器上下載所述待編譯代碼;以及用于從所述服務器下載所述至少兩個 從編譯機的編譯信息,并對下載到的編譯信息進行匯總。
【文檔編號】G06F9/44GK103440136SQ201310400588
【公開日】2013年12月11日 申請日期:2013年9月5日 優先權日:2013年9月5日
【發明者】黃永超, 羅向征, 鄧海紅, 邱柯銘 申請人:邁普通信技術股份有限公司