欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

對電子表格中的數(shù)據(jù)項(xiàng)的多線程排序的制作方法

文檔序號:6360239閱讀:190來源:國知局
專利名稱:對電子表格中的數(shù)據(jù)項(xiàng)的多線程排序的制作方法
對電子表格中的數(shù)據(jù)項(xiàng)的多線程排序背景電子表格應(yīng)用使用戶能夠查看和操縱表格數(shù)據(jù)。例如,電子表格應(yīng)用可使用戶能夠查看和操縱包含對應(yīng)于不同產(chǎn)品的各行以及對應(yīng)于不同倉庫的各列的電子表格。在該示例中,單元格包含指示各倉庫處的產(chǎn)品庫存的值。在許多情況下,用戶想要能夠?qū)﹄娮颖砀裰械母餍羞M(jìn)行排序。繼續(xù)上述示例,用戶可能想要基于一特定倉庫包含每一產(chǎn)品的量來對電子表格中的各行進(jìn)行排序。在其他情況下,用戶想要能夠?qū)﹄娮颖砀裰械母髁羞M(jìn)行排序。繼續(xù)上述示例,用戶可能想要基于一特定產(chǎn)品在每一倉庫中的量來對電子表格中的各列進(jìn)行排序。在大型電子表格中,對電子表格中的各行進(jìn)行排序的過程可能是相當(dāng)緩慢的。這一處理延遲可能中斷用戶的思路或阻礙用戶對電子表格中的各行進(jìn)行排序。因此,使對電 子表格中的各行進(jìn)行排序的過程盡可能快是合乎需要的。概述一種計(jì)算系統(tǒng)將電子表格中的數(shù)據(jù)項(xiàng)分成多個(gè)塊。然后使用多個(gè)線程來對每一塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序。在對各塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序之后,多個(gè)線程將各塊合并成最終塊。然后顯示電子表格的經(jīng)排序版本。電子表格的經(jīng)排序版本中的數(shù)據(jù)項(xiàng)具有與最終塊中的數(shù)據(jù)項(xiàng)相同的次序。提供本概述以介紹一些概念。這些概念在以下詳細(xì)描述中進(jìn)一步描述。本概述并不旨在標(biāo)識所要求保護(hù)的主題的關(guān)鍵特征或必要特征,也不旨在用于幫助確定所要求保護(hù)的主題的范圍。附圖
簡述圖I是示出示例計(jì)算系統(tǒng)的框圖。圖2是示出計(jì)算系統(tǒng)的示例替換實(shí)施例的框圖。圖3是示出對電子表格進(jìn)行排序的示例操作的流程圖。圖4是示出由塊排序線程執(zhí)行以便對一個(gè)或多個(gè)塊進(jìn)行排序的示例操作的流程圖。圖5是示出由最小合并線程執(zhí)行以便將一組經(jīng)排序塊中的最小剩余行插入最終塊的示例操作的流程圖。圖6是示出由最大合并線程執(zhí)行以便將一組經(jīng)排序塊中的最大剩余行插入最終塊的示例操作的流程圖。圖7是示出示例計(jì)算設(shè)備的框圖。詳細(xì)描述圖I是示出示例計(jì)算系統(tǒng)100的框圖。計(jì)算系統(tǒng)100是包括一個(gè)或多個(gè)計(jì)算設(shè)備的系統(tǒng)。計(jì)算設(shè)備是處理信息的物理、有形設(shè)備。在各實(shí)施例中,計(jì)算系統(tǒng)100包括各種類型的計(jì)算設(shè)備。例如,計(jì)算系統(tǒng)100可包括一個(gè)或多個(gè)臺式計(jì)算機(jī)、膝上型計(jì)算機(jī)、上網(wǎng)本計(jì)算機(jī)、手持式計(jì)算設(shè)備、智能電話、獨(dú)立服務(wù)器設(shè)備、刀片服務(wù)器設(shè)備、大型計(jì)算機(jī)、超級計(jì)算機(jī)和/或其他類型的計(jì)算設(shè)備。在其中計(jì)算系統(tǒng)100包括不止一個(gè)計(jì)算設(shè)備的實(shí)施例中,計(jì)算系統(tǒng)100中的計(jì)算設(shè)備可以分布在各個(gè)位置并經(jīng)由諸如因特網(wǎng)或局域網(wǎng)等網(wǎng)絡(luò)來進(jìn)行通信。如圖I的示例所示,計(jì)算系統(tǒng)100包括數(shù)據(jù)存儲(chǔ)系統(tǒng)102、處理系統(tǒng)104和顯示系統(tǒng)106。應(yīng)當(dāng)理解,在其他實(shí)施例中,計(jì)算系統(tǒng)100包括比圖I的示例所示更多或更少的組件。此外,應(yīng)當(dāng)理解,圖I以簡化形式示出了計(jì)算系統(tǒng)100以便于理解。數(shù)據(jù)存儲(chǔ)系統(tǒng)102是包括一個(gè)或多個(gè)計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)的系統(tǒng)。計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)是能夠以易失性或非易失性方式存儲(chǔ)數(shù)據(jù)的物理設(shè)備或制品。在一些實(shí)施例中,數(shù)據(jù)存儲(chǔ)系統(tǒng)102包括一個(gè)或多個(gè)非瞬時(shí)計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)的示例類型包括隨機(jī)存取存儲(chǔ)器(RAM)、只讀存儲(chǔ)器(ROM)、光盤(例如,⑶-ROM、DVD、藍(lán)光盤、HDDVD盤等)、磁盤(例如,硬盤驅(qū)動(dòng)器、軟盤等)、固態(tài)存儲(chǔ)器設(shè)備(例如,閃存驅(qū)動(dòng)器)、EEPR0M、現(xiàn)場可編程門陣列(FPGA)等。在其中數(shù)據(jù)存儲(chǔ)系統(tǒng)102包括不止一個(gè)計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)的一些實(shí)施例中,計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)分布在各個(gè)地理位置?!?br> 數(shù)據(jù)存儲(chǔ)系統(tǒng)102存儲(chǔ)表示電子表格應(yīng)用108的計(jì)算機(jī)可讀指令。在其中數(shù)據(jù)存儲(chǔ)系統(tǒng)102包括不止一個(gè)計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)的一些實(shí)施例中,表示電子表格應(yīng)用108的計(jì)算機(jī)可讀指令分布在這些計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)中的兩個(gè)或更多個(gè)上。在其中數(shù)據(jù)存儲(chǔ)系統(tǒng)102包括不止一個(gè)計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)的其他實(shí)施例中,表示電子表格應(yīng)用108的計(jì)算機(jī)可讀指令只被存儲(chǔ)在這些計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)中的一個(gè)上。處理系統(tǒng)104是包括多個(gè)處理單元IlOA到IlON (統(tǒng)稱為“處理單元110”)的系統(tǒng)。在各實(shí)施例中,處理系統(tǒng)104包括各種數(shù)量的處理單兀。例如,處理系統(tǒng)104可包括一個(gè)、兩個(gè)、四個(gè)、八個(gè)、十六個(gè)、三十二個(gè)、六十四個(gè)或其他數(shù)量的處理單元。每一個(gè)處理單元110都是物理集成電路。每一個(gè)處理單元110能夠與其他處理單元110異步地執(zhí)行計(jì)算機(jī)可讀指令。結(jié)果,處理單元110能夠彼此并行地獨(dú)立執(zhí)行計(jì)算機(jī)可讀指令。顯示系統(tǒng)106是處理系統(tǒng)104用來向用戶顯示信息的系統(tǒng)。在各實(shí)施例中,顯示系統(tǒng)106以各種方式向用戶顯示信息。例如,在一些實(shí)施例中,顯示系統(tǒng)106包括圖形界面和監(jiān)視器。處理系統(tǒng)104中的處理單元110執(zhí)行表示電子表格應(yīng)用108的指令。表示電子表格應(yīng)用108的指令在被處理單元110執(zhí)行時(shí)使得計(jì)算系統(tǒng)100提供電子表格應(yīng)用108。電子表格應(yīng)用108使用戶能夠查看和操縱電子表格。電子表格是被組織為具有一行或多行以及一列或多列的表格的數(shù)據(jù)集。表格數(shù)據(jù)可表示各種類型的數(shù)據(jù)。例如,表格數(shù)據(jù)可以是銷售數(shù)據(jù)、庫存數(shù)據(jù)、軍事數(shù)據(jù)、記賬數(shù)據(jù)、統(tǒng)計(jì)數(shù)據(jù)、人口數(shù)據(jù)、人口統(tǒng)計(jì)數(shù)據(jù)、財(cái)務(wù)數(shù)據(jù)、醫(yī)學(xué)數(shù)據(jù)、體育數(shù)據(jù)、科學(xué)數(shù)據(jù)或可被呈現(xiàn)在表格中的任何其他類型的可排序數(shù)據(jù)。電子表格中的單元格可包含具有各種數(shù)據(jù)類型的值。例如,單元格中的值可以是整數(shù)、實(shí)數(shù)、浮點(diǎn)數(shù)、字母數(shù)字文本串、日期、貨幣金額、布爾值等。除了單元格中的值之外,每一個(gè)單元格還可具有各種其他屬性。例如,每一個(gè)單元格都可具有背景顏色屬性、字體顏色屬性、一個(gè)或多個(gè)標(biāo)志屬性、可見性屬性、字體樣式屬性、字體大小屬性等。電子表格應(yīng)用108能夠使用多個(gè)線程來對電子表格執(zhí)行排序過程。該排序過程可以對電子表格中的各行或各列執(zhí)行。為了解釋方便,本文討論對電子表格中的各行執(zhí)行排序操作。然而,應(yīng)當(dāng)理解,除非另外指明,否則本文中的對行的討論可以等同地適用于列。術(shù)語“數(shù)據(jù)項(xiàng)”在本文中用來大致指代一行或一列。排序過程對電子表格中的各行進(jìn)行排序。在各種情況下,電子表格可以是完整的電子表格、表格的一部分、數(shù)據(jù)透視表或另一種類型的電子表格。此外,在一些實(shí)施例中,電子表格應(yīng)用108的用戶選擇電子表格。對電子表格中的各行進(jìn)行排序包括操縱電子表格中的各行的次序以使得電子表格中的各行被適當(dāng)?shù)嘏判?。?dāng)電子表格中的各行針對每一個(gè)排序依據(jù)(sort-by)列被適當(dāng)?shù)嘏判驎r(shí),這些行被適當(dāng)?shù)嘏判?。排序依?jù)列是作為電子表格中的各行的排序依據(jù)的列。在對各列的排序操作中,當(dāng)電子表格中的各列針對每一排序依據(jù)行被適當(dāng)?shù)嘏判驎r(shí),這些列被適當(dāng)?shù)嘏判?。術(shù)語“排序依據(jù)線”在本文中用來大致指代排序依據(jù)列或排序依據(jù)行。每一排序依據(jù)列都具有排序要求。排序要求包括相關(guān)屬性和排序關(guān)系。相關(guān)屬性可以是排序依據(jù)列中的單元格的各種不同屬性。例如,相關(guān)屬性可以是單元格中的值、單元格的顏色、單元格上的標(biāo)志、單元格中的字體顏色、單元格中的字體樣式、單元格中的字體大小、單元格的隱藏/可見狀態(tài)以及單元格的其他屬性。 排序關(guān)系是定義如何對屬性進(jìn)行排序的一個(gè)或多個(gè)規(guī)則的集合。排序關(guān)系的示例類型包括字母排序、逆字母排序、數(shù)字排序、逆數(shù)字排序、年代排序、逆年代排序、類別排序、地理排序和其它類型的排序。作為類別排序的一個(gè)特定示例,排序關(guān)系可通過指示所有真值在任何假值前面來定義布爾值排序。在另一示例中,排序關(guān)系可通過指示藍(lán)色單元格在綠色單元格前面、黃色單元格在藍(lán)色單元格前面、紅色單元格在黃色單元格前面等來定義單元格顏色排序。在一些實(shí)施例中,電子表格應(yīng)用108的用戶能夠選擇排序依據(jù)列和相關(guān)屬性以及排序依據(jù)列的排序關(guān)系。當(dāng)存在多個(gè)排序依據(jù)列時(shí),對排序依據(jù)列進(jìn)行排名。電子表格中的各行首先根據(jù)排名最高的排序依據(jù)列的排序要求來進(jìn)行排序,然后根據(jù)排名第二高的排序依據(jù)列的排序要求來進(jìn)行排序,以此類推。換言之,各行在以下情況下針對給定排序依據(jù)列被適當(dāng)?shù)嘏判驅(qū)τ谠诿恳粋€(gè)排名較高的排序依據(jù)列的單元格中具有相同的相關(guān)屬性的任意兩行,這兩行滿足給定排序依據(jù)列的排序要求。當(dāng)給定排序依據(jù)列的排序關(guān)系對這兩個(gè)單元格的相關(guān)屬性保持為真時(shí),這兩行滿足給定排序依據(jù)列的排序要求。如在本文中的其他地方詳細(xì)描述的,排序過程將電子表格中的各行分成多個(gè)塊。塊是行的集合。在這些行被分成各塊之后,排序過程進(jìn)入塊排序階段。在塊排序階段期間,單獨(dú)的塊排序線程用于對每一塊中的各行進(jìn)行排序。這些塊排序線程可以在多個(gè)處理單元110上并發(fā)執(zhí)行。線程是程序的一部分,該部分能夠獨(dú)立于該程序中的其他部分且與其他部分并發(fā)地運(yùn)行。在塊排序線程對每一塊中的各行進(jìn)行排序之后,排序過程進(jìn)入合并階段。在合并階段期間,電子表格應(yīng)用108使用多個(gè)線程來將經(jīng)排序塊合并成最終塊。最終塊包含電子表格中的每一個(gè)行。最終塊中的各行被適當(dāng)?shù)嘏判?。在一些?shí)施例中,電子表格可包括隱藏行。隱藏行是在電子表格中但對電子表格應(yīng)用108的用戶不可見的行。用戶可選擇隱藏特定行以簡化電子表格的外觀。在這些實(shí)施例中,排序過程對電子表格中的隱藏行和可見行進(jìn)行排序。在經(jīng)排序塊被合并成最終塊之后,電子表格應(yīng)用108輸出結(jié)果數(shù)據(jù)以便呈現(xiàn)給電子表格應(yīng)用108的用戶。結(jié)果數(shù)據(jù)取決于最終塊中的各行的次序。在各實(shí)施例中,電子表格應(yīng)用108基于最終塊來輸出各種類型的數(shù)據(jù)。例如,在一些實(shí)施例中,電子表格應(yīng)用108輸出電子表格的經(jīng)排序版本,其中該電子表格中的各行具有與最終塊中的各行相同的次序。此外,在一些實(shí)施例中,電子表格應(yīng)用108生成并顯不不出經(jīng)排序的電子表格中的至少一些行的報(bào)告。此外,在一些實(shí)施例中,結(jié)果數(shù)據(jù)不一定需要包括電子表格中的所有行。在結(jié)果數(shù)據(jù)由另一進(jìn)程來消費(fèi)或者電子表格的子集將進(jìn)行進(jìn)一步排序的情況下,結(jié)果數(shù)據(jù)不一定被呈現(xiàn)給用戶。在一些實(shí)施例中,本文描述的多線程排序過程可以比不使用多個(gè)線程的排序過程快得多。例如,在一些實(shí)施例中,多線程排序過程的理論加速因子是l/(p/t+mp/2+r),其中sp是多線程排序過程中發(fā)生在塊排序階段的工作的百分比,其中t是塊排序線程的數(shù)量,其中mp是多線程排序過程中發(fā)生在合并階段的工作的百分比,而r是多線程排序過程中的其余工作的百分比。例如,在sp=26%, t = 4, mp=43%, r=31%的情況下,理論加速因子是169%ο在另一示例中,在sp=26%, t = 2,mp=43%, r=31%的情況下,理論加速因子是153%。給定數(shù)量的線程的理論加速因子是在給定數(shù)量的線程的情況下順序算法的執(zhí)行時(shí)間除以并行算法的執(zhí)行時(shí)間的比值。在實(shí)踐中,多線程排序過程的觀察到的加速因子可以比該理 論加速因子小。 以下示例描述了特定計(jì)算系統(tǒng)上的多線程排序過程的觀察到的性能。應(yīng)當(dāng)理解,該示例中提及的時(shí)間和百分比是針對特定計(jì)算系統(tǒng)的,并且在不同的實(shí)施例中且當(dāng)在不同的計(jì)算系統(tǒng)上執(zhí)行時(shí)是不同的。在該示例中,所提及的時(shí)間和加速因子包括在多線程排序過程的排序階段和合并階段期間耗費(fèi)的時(shí)間加上在多線程排序過程期間耗費(fèi)的附加時(shí)間。這一附加時(shí)間可包括更新單元格以及呈現(xiàn)電子表格以供查看所耗費(fèi)的時(shí)間。在該示例中,在排序階段和合并階段期間耗費(fèi)的時(shí)間大約是在整個(gè)多線程排序過程期間耗費(fèi)的時(shí)間的69%ο在該示例中,與在處理系統(tǒng)104只包括單個(gè)處理單元時(shí)在I. 19秒內(nèi)對具有IO6行的電子表格執(zhí)行排序過程相比,在處理系統(tǒng)104中存在四個(gè)處理單元的情況下在O. 76秒內(nèi)對具有IO6行的電子表格執(zhí)行排序過程,從而得到大致為156%的觀察到的加速因子。在該示例中,與在處理系統(tǒng)104只包括單個(gè)處理單元時(shí)在O. 108秒內(nèi)對具有IO5行的電子表格執(zhí)行排序過程相比,在處理系統(tǒng)104中存在四個(gè)處理單元的情況下在O. 075秒內(nèi)對具有IO5行的電子表格執(zhí)行排序過程,從而得到大致為144%的觀察到的加速因子。在該示例中,與在處理系統(tǒng)104只包括單個(gè)處理單元時(shí)在O. 015秒內(nèi)對具有IO4行的電子表格執(zhí)行排序過程相比,在處理系統(tǒng)104中存在四個(gè)處理單元的情況下在O. 012秒內(nèi)對具有IO4行的電子表格執(zhí)行排序過程,從而得到大致為122%的觀察到的加速因子。在該示例中,與在處理系統(tǒng)104只包括單個(gè)處理單元時(shí)在I. 19秒內(nèi)對具有IO6行的電子表格執(zhí)行排序過程相比,在處理系統(tǒng)104中存在兩個(gè)處理單元的情況下在O. 82秒內(nèi)對具有IO6行的電子表格執(zhí)行排序過程,從而得到大致為144%的觀察到的加速因子。在該示例中,與在處理系統(tǒng)104只包括單個(gè)處理單元時(shí)在O. 112秒內(nèi)對具有IO5行的電子表格執(zhí)行排序過程相比,在處理系統(tǒng)104中存在兩個(gè)處理單元的情況下在O. 079秒內(nèi)對具有IO5行的電子表格執(zhí)行排序過程,從而得到大致為142%的觀察到的加速因子。在該示例中,與在處理系統(tǒng)104只包括單個(gè)處理單元時(shí)在
O.015秒內(nèi)對具有IO4行的電子表格執(zhí)行排序過程相比,在處理系統(tǒng)104中存在兩個(gè)處理單元的情況下在O. 012秒內(nèi)對具有IO4行的電子表格執(zhí)行排序過程,從而得到針對具有IO4行的電子表格的大致為122%的觀察到的加速因子。
圖2是計(jì)算系統(tǒng)系統(tǒng)100的示例替換實(shí)施例的框圖。如圖2的示例所示,計(jì)算系統(tǒng)100包括數(shù)據(jù)存儲(chǔ)系統(tǒng)102和處理系統(tǒng)104,如同圖I所示的示例實(shí)施例。然而,不同于圖I所示的示例實(shí)施例,圖2所示的計(jì)算系統(tǒng)100的示例替換實(shí)施例具有網(wǎng)絡(luò)接口 200而不是顯示系統(tǒng)106。網(wǎng)絡(luò)接口系統(tǒng)200使得計(jì)算系統(tǒng)100能夠經(jīng)由網(wǎng)絡(luò)204向客戶機(jī)設(shè)備202發(fā)送數(shù)據(jù)以及從客戶機(jī)設(shè)備202接收數(shù)據(jù)。網(wǎng)絡(luò)204是通信網(wǎng)絡(luò)。網(wǎng)絡(luò)204是計(jì)算設(shè)備和方便在計(jì)算系統(tǒng)100和客戶機(jī)設(shè)備202之間進(jìn)行通信的鏈接的集合。在各實(shí)施例中,網(wǎng)絡(luò)204包括各種類型的計(jì)算設(shè)備。例如,網(wǎng)絡(luò)204可包括路由器、交換機(jī)、移動(dòng)接入點(diǎn)、網(wǎng)橋、集線器、侵入檢測設(shè)備、存儲(chǔ)設(shè)備、獨(dú)立服務(wù)器設(shè)備、刀片服務(wù)器設(shè)備、傳感器、臺式計(jì)算機(jī)、防火墻設(shè)備、膝上型計(jì)算機(jī)、手持式計(jì)算機(jī)、移動(dòng)電話和其他類型的計(jì)算設(shè)備。在各實(shí)施例中,網(wǎng)絡(luò)204包括各種類型的鏈接。例如,網(wǎng)絡(luò)204可包括有線和/或無線鏈接。此外,在各實(shí)施例中,網(wǎng)絡(luò)204按各種規(guī)模實(shí)現(xiàn)。例如,網(wǎng)絡(luò)204可被實(shí)現(xiàn)為一個(gè)或多個(gè)局域網(wǎng)(LAN)、城域網(wǎng)、子網(wǎng)、廣域網(wǎng)(諸如因特網(wǎng))或可以按另一規(guī)模來實(shí)現(xiàn)。
客戶機(jī)設(shè)備202是計(jì)算設(shè)備。例如,客戶機(jī)設(shè)備202可以是用戶使用的個(gè)人計(jì)算機(jī)。用戶使用客戶機(jī)設(shè)備202來經(jīng)由網(wǎng)絡(luò)204向計(jì)算系統(tǒng)100發(fā)送請求并從計(jì)算系統(tǒng)100接收信息。以此方式,用戶可使用客戶機(jī)設(shè)備202來采用電子表格應(yīng)用108來查看和操縱表格數(shù)據(jù)。例如,計(jì)算系統(tǒng)100可經(jīng)由網(wǎng)絡(luò)204向客戶機(jī)設(shè)備202發(fā)送結(jié)果數(shù)據(jù)。在該示例中,客戶機(jī)設(shè)備202被配置成處理結(jié)果數(shù)據(jù)以便呈現(xiàn)給客戶機(jī)設(shè)備202的用戶。例如,客戶機(jī)設(shè)備202可呈現(xiàn)包含結(jié)果數(shù)據(jù)的網(wǎng)頁或與客戶機(jī)應(yīng)用交互以顯示結(jié)果數(shù)據(jù)。圖3是示出對電子表格進(jìn)行排序的示例操作300的流程圖。如圖3的示例所示,操作300在電子表格應(yīng)用108接收到排序命令(302)時(shí)開始。排序命令指示電子表格應(yīng)用108對特定電子表格啟動(dòng)排序過程。此外,排序命令可指定一個(gè)或多個(gè)排序依據(jù)列、每一個(gè)排序依據(jù)列的相關(guān)屬性以及每一個(gè)排序依據(jù)列的排序關(guān)系。在一些實(shí)施例中,電子表格應(yīng)用108的用戶可指定電子表格、一個(gè)或多個(gè)排序依據(jù)列、相關(guān)屬性和/或排序關(guān)系。在各實(shí)施例中,電子表格應(yīng)用108以各種方式接收排序命令。例如,在一些實(shí)施例中,電子表格應(yīng)用108在該電子表格應(yīng)用的用戶選擇電子表格應(yīng)用108的特定用戶界面控件時(shí)接收到排序命令。此外,在一些實(shí)施例中,電子表格應(yīng)用108在用戶輸入特定鍵盤命令時(shí)接收到排序命令。此外,在一些實(shí)施例中,電子表格應(yīng)用108從在計(jì)算系統(tǒng)100、客戶機(jī)設(shè)備202或另一計(jì)算設(shè)備上操作的另一進(jìn)程、線程或應(yīng)用處接收排序命令。此外,在一些實(shí)施例中,電子表格應(yīng)用108在未從用戶或另一進(jìn)程、線程或應(yīng)用接收到顯式排序命令的情況下開始操作300。例如,在一些實(shí)施例中,電子表格應(yīng)用108可定期或基于調(diào)度來自動(dòng)開始操作300。此外,在一些實(shí)施例中,電子表格應(yīng)用108可以在用戶更新電子表格中的一行或多行時(shí)自動(dòng)開始操作300。此外,在一些實(shí)施例中,電子表格應(yīng)用108響應(yīng)于檢測到或接收到指示從中繪制電子表格的數(shù)據(jù)源中發(fā)生了改變的事件而自動(dòng)開始操作300。響應(yīng)于接收到排序命令或以其他方式接收到對電子表格啟動(dòng)排序過程的指示,電子表格應(yīng)用108確定電子表格中的總行數(shù)是否超過下限(304)。在各實(shí)施例中,下限具有各種值。例如,在一些實(shí)施例中,下限是255。在其他實(shí)施例中,下限大于255或小于255。在一些實(shí)施例中,電子表格應(yīng)用108呈現(xiàn)允許管理用戶設(shè)置下限的用戶界面。管理用戶可以是接收結(jié)果數(shù)據(jù)的用戶或另一用戶。如果電子表格中的行數(shù)未超過下限(304為“否”),則電子表格應(yīng)用108使用單個(gè)線程來對電子表格中的各行進(jìn)行排序(306)。換言之,該單個(gè)線程生成包含電子表格中的每一行的最終塊。最終塊中的各行被適當(dāng)?shù)嘏判?。?dāng)行數(shù)相對較少時(shí),使用單個(gè)線程來對各行進(jìn)行排序可以比使用多個(gè)線程來對各行進(jìn)行排序更高效。這是因?yàn)榭赡艽嬖谂c啟動(dòng)或喚醒線程相關(guān)聯(lián)的計(jì)算懲罰(例如,延遲)。這些計(jì)算懲罰可能只在存在足夠數(shù)量的行時(shí)才是值得遭受的。如果電子表格中的行數(shù)超過下限(304為“是”),則電子表格應(yīng)用108確定適當(dāng)?shù)膲K大小(308)。適當(dāng)?shù)膲K大小是塊被允許包含的最大行數(shù)。在各實(shí)施例中,電子表格應(yīng)用108以各種方式確定適當(dāng)?shù)膲K大小。例如,在一些實(shí)施例中,電子表格應(yīng)用108基于電子表格中的行數(shù)來確定適當(dāng)?shù)膲K大小。例如,在該示例中,當(dāng)電子表格中的總行數(shù)大于或等于第一閾值(例如,257)并小于或等于第二閾值(例如,16384)時(shí),電子表格應(yīng)用108確定適當(dāng)?shù)膲K大小是第一塊大小(例如,128行)。在該示例中,當(dāng)電子表格中的總行數(shù)大于第二閾值時(shí),電子表格應(yīng)用108確定適當(dāng)?shù)膲K大小是第二塊大小(例如,1024行)。第二塊大小大于第一 塊大小。在其他實(shí)施例中,電子表格應(yīng)用108可使用不同的塊大小和閾值數(shù)來以類似的方式確定適當(dāng)?shù)膲K大小。此外,在一些實(shí)施例中,可使用不止兩個(gè)閾值。此外,在一些實(shí)施例中,電子表格應(yīng)用108呈現(xiàn)使管理用戶能夠選擇適當(dāng)?shù)膲K大小或用于確定適當(dāng)?shù)膲K大小的準(zhǔn)則的用戶界面。管理用戶可以是接收結(jié)果數(shù)據(jù)的用戶或另一用戶。接著,電子表格應(yīng)用108將電子表格中的各行分成一組塊(310)。沒有一個(gè)塊包含比適當(dāng)?shù)膲K大小更多的行。在行數(shù)未被適當(dāng)?shù)膲K大小除盡的情況下,一個(gè)塊被允許包含比適當(dāng)?shù)膲K大小更少的行。例如,如果電子表格中存在300行且適當(dāng)?shù)膲K大小是128行,則將存在每個(gè)128行的兩個(gè)塊,以及一個(gè)包含44行的塊。在各實(shí)施例中,塊以各種方式實(shí)現(xiàn)。例如,在一些實(shí)施例中,塊被實(shí)現(xiàn)為包含各行的標(biāo)識符(例如,行“513”、行“234”、行“876”等)的數(shù)據(jù)結(jié)構(gòu)。在又一些其他實(shí)施例中,塊是包括各行的副本的數(shù)據(jù)結(jié)構(gòu)。合適的數(shù)據(jù)結(jié)構(gòu)包括鏈路表、數(shù)組、矢量、度列、棧或其他類型的數(shù)據(jù)結(jié)構(gòu)。在將電子表格中的各行分成一組塊之后,電子表格應(yīng)用108確定用于該電子表格的塊排序線程的適當(dāng)數(shù)量(312)。在各實(shí)施例中,電子表格應(yīng)用108以各種方式確定塊排序線程的適當(dāng)數(shù)量。例如,在一些實(shí)施例中,如果塊數(shù)小于或等于處理系統(tǒng)104中的處理單元110的數(shù)量,則電子表格應(yīng)用108確定塊排序線程的適當(dāng)數(shù)量等于該塊數(shù)。如果塊數(shù)大于處理系統(tǒng)104中的處理單元110的數(shù)量,則電子表格應(yīng)用108確定塊排序線程的適當(dāng)數(shù)量等于處理系統(tǒng)104中的處理單元110的數(shù)量。在一些實(shí)施例中,電子表格應(yīng)用108呈現(xiàn)允許管理用戶設(shè)置塊排序線程的適當(dāng)數(shù)量的用戶界面。在確定塊排序線程的適當(dāng)數(shù)量之后,電子表格應(yīng)用108開始排序過程中的塊排序階段。在排序過程中的塊排序階段期間,電子表格應(yīng)用108使用適當(dāng)數(shù)量的塊排序線程來對各塊中的行進(jìn)行排序(314)。在某些情況下,每一個(gè)塊排序線程在處理系統(tǒng)104中的不同的處理單元110上并行執(zhí)行。每一個(gè)塊排序線程選擇未排序塊并對所選塊中的行進(jìn)行排序。這繼續(xù)直到每一塊中的各行被適當(dāng)?shù)嘏判?。在本文中的其他地方詳?xì)描述的圖4示出了由每一個(gè)塊排序線程執(zhí)行的示例操作。
在塊排序線程完成對各塊的排序之后,排序過程中的塊排序階段結(jié)束并且排序過程中的合并階段開始。在排序過程中的合并階段期間,電子表格應(yīng)用108使用最小合并線程和最大合并線程來將各塊合并成單個(gè)最終塊(316)。最終塊包括電子表格中的所有行。最終塊中的各行被適當(dāng)?shù)嘏判?。最小合并線程和最大合并線程能夠在處理系統(tǒng)104中的不同的處理單元110上并行操作。電子表格應(yīng)用108向最小合并線程和最大合并線程提供對一組經(jīng)排序塊的引用。為了將經(jīng)排序塊合并成單個(gè)最終塊,最小合并線程漸進(jìn)地將經(jīng)排序塊中的最小剩余行插入最終塊。最大合并線程漸進(jìn)地將經(jīng)排序塊中的最大剩余行插入最終塊。當(dāng)一行不在最終塊中時(shí),該行被認(rèn)為是“剩余的”。最小剩余行是將在經(jīng)排序塊中的所有剩余行都已針對當(dāng)前排序依據(jù)列被適當(dāng)?shù)嘏判虻那闆r下被首先列出的行。最大剩余行是將在這些塊中的所有剩余行都已針對當(dāng)前排序依據(jù)列被適當(dāng)?shù)嘏判虻那闆r下被最后列出的行。在本文中的其他地方詳細(xì)描述的圖5示出了由最小合并線程執(zhí)行以便漸進(jìn)地將經(jīng)排序塊中的最小剩余行插入最終塊的示例操作。在本文中的其他地方詳細(xì)描述的圖6示出了由最大合并線程執(zhí)行以便漸進(jìn)地將經(jīng)排序塊中的最大剩余行插入最終塊的示例操作。在步驟316中最小合并線程和最大合并線程將經(jīng)排序塊合并成最終塊之后或者·在步驟306中對各行進(jìn)行排序之后,電子表格應(yīng)用108返回最終塊(318)。圖4是示出由塊排序線程執(zhí)行以便對一個(gè)或多個(gè)塊進(jìn)行排序的示例操作400的流程圖。盡管操作400在此被描述為由單個(gè)塊排序線程執(zhí)行,但對于電子表格的排序過程中的塊排序階段中所涉及的每一線程并發(fā)執(zhí)行操作400。如圖4的示例所示,操作400在電子表格應(yīng)用108喚醒塊排序線程(402)時(shí)開始。喚醒線程是使得線程準(zhǔn)備好運(yùn)行的過程。當(dāng)電子表格應(yīng)用108喚醒塊排序線程時(shí),電子表格應(yīng)用108向塊排序線程提供塊池標(biāo)識符。塊池標(biāo)識符標(biāo)識電子表格的塊池。塊池是包含電子表格中的各行的一組塊。塊排序線程使用塊池標(biāo)識符來訪問塊池。在各實(shí)施例中,電子表格應(yīng)用108能夠以各種方式喚醒塊排序線程。例如,在一些實(shí)施例中,電子表格應(yīng)用108維護(hù)能夠擔(dān)當(dāng)塊排序線程的線程的池。池中的可用線程已被啟動(dòng),但是休眠的。在該示例中,電子表格應(yīng)用108選擇線程池中的線程來擔(dān)當(dāng)塊排序線程并向所選線程提供喚醒事件。在其他實(shí)施例中,電子表格應(yīng)用108可通過創(chuàng)建能夠執(zhí)行操作400的新線程來喚醒塊排序線程。在喚醒塊排序線程之后,該塊排序線程確定塊池是否包括任何未排序塊(404)。在各實(shí)施例中,塊排序線程能夠以各種方式確定塊池是否包括任何未排序塊。例如,在一些實(shí)施例中,電子表格應(yīng)用108維護(hù)包含對應(yīng)于塊池中的每一塊的標(biāo)志的數(shù)據(jù)結(jié)構(gòu)。對應(yīng)于一塊的標(biāo)志在該塊已被排序時(shí)具有一個(gè)值,并且在該塊尚未被排序時(shí)具有另一個(gè)值。對于電子表格的排序過程中的塊排序階段中所涉及的每一塊排序線程使用該數(shù)據(jù)結(jié)構(gòu)來確定塊池是否包括任何未排序塊。在其他實(shí)施例中,當(dāng)塊排序線程對各塊進(jìn)行排序時(shí),該塊排序線程將塊從第一緩沖器移至第二緩沖器。在這些實(shí)施例中,塊排序線程通過確定第一緩沖器是否包括任何塊來確定塊池是否包括任何未排序塊。如果塊池包括任何未排序塊(404為“是”),則塊排序線程選擇塊池中的一個(gè)未排序塊(406 )。對于電子表格的排序過程中所涉及的每一塊排序線程從相同的塊池中選擇未排序塊。當(dāng)塊排序線程選擇了一塊時(shí),沒有其他塊排序線程選擇該塊。例如,對于電子表格的排序過程中涉及第一塊排序線程和第二塊排序線程,并且電子表格的塊池包括塊“A”、“B”和“C”。在該示例中,第一塊排序線程可選擇塊“A”,而第二塊排序線程可選擇塊“B”。在該示例中,在第一塊排序線程選擇塊“A”后,第二塊排序線程無法選擇塊“A”,即使第一塊排序線程未完成對塊“A”的排序。在各實(shí)施例中,塊排序線程以各種方式從塊池中選擇一個(gè)未排序塊。例如,在一些實(shí)施例中,塊排序線程偽隨機(jī)地選擇一個(gè)未排序塊。在其他實(shí)施例中,塊排序線程基于未排序塊在塊池中的次序來選擇一個(gè)未排序塊。接著,塊排序線程對所選塊中的各行進(jìn)行排序(408)。塊排序線程根據(jù)所選塊中的各行的排序依據(jù)列中的相關(guān)屬性上的排序關(guān)系來對所選塊中各行進(jìn)行排序。在各實(shí)施例中,塊排序線程以各種方式對所選塊中的各行進(jìn)行排序。例如,在一些實(shí)施例中,塊排序線程使用氣泡排序算法來對所選塊中的各行進(jìn)行排序。在另一示例中,塊排序線程使用快速 排序算法(例如,qsort)來對所選塊中的各行進(jìn)行排序。在又一示例中,塊排序線程使用合并排序算法來對所選塊中的各行進(jìn)行排序。在各實(shí)施例中,塊排序線程執(zhí)行各種動(dòng)作以指示所選塊已被排序。例如,電子表格應(yīng)用108維護(hù)包含對應(yīng)于塊池中的每一塊的標(biāo)志的數(shù)據(jù)結(jié)構(gòu)。在該示例中,塊排序線程在該塊排序線程已經(jīng)對所選塊中的各行進(jìn)行排序之后改變對應(yīng)于所選塊的標(biāo)志的值。在對所選塊中的各行進(jìn)行排序之后,塊排序線程再次確定塊池中是否存在任何未排序塊(404)。只要塊池中存在未排序塊,塊排序線程就繼續(xù)在塊池中選擇塊并對其進(jìn)行排序。如果塊池中不存在未排序塊(404為“否”),則塊排序線程轉(zhuǎn)到休眠(410)。當(dāng)塊排序線程轉(zhuǎn)到休眠時(shí),塊排序線程進(jìn)入非活動(dòng)狀態(tài)。隨后,電子表格應(yīng)用108可重新喚醒塊排序線程并指示該塊排序線程對另一電子表格的塊池執(zhí)行操作400。在替換實(shí)施例中,塊排序線程在塊池中不存在未排序塊時(shí)被終止。圖5是示出由最小合并線程執(zhí)行以便將一組經(jīng)排序塊中的最小剩余行插入最終塊的示例操作500的流程圖。如圖5的示例所示,操作500在電子表格應(yīng)用108喚醒最小合并線程(502)時(shí)開始。在各實(shí)施例中,電子表格應(yīng)用108以各種方式喚醒最小合并線程。例如,在一些實(shí)施例中,電子表格應(yīng)用108維護(hù)對能夠執(zhí)行操作500的休眠線程的引用。在一些實(shí)施例中,休眠線程可包括排序過程中的塊排序階段中所使用的塊排序線程。換言之,一個(gè)塊排序線程可擔(dān)當(dāng)最小合并線程。在其他實(shí)施例中,電子表格應(yīng)用108只維護(hù)能夠執(zhí)行操作500的單個(gè)線程。為了喚醒最小合并線程,電子表格應(yīng)用108向可執(zhí)行操作500的線程提供喚醒事件,并且向最小合并線程提供對一組經(jīng)排序塊的引用。在各實(shí)施例中,最小合并線程在該最小合并線程被喚醒時(shí)執(zhí)行各種操作。例如,在一些實(shí)施例中,最小合并線程在該最小合并線程被喚醒時(shí)構(gòu)造紅黑樹。紅黑樹是特定類型的二分搜索樹。二分搜索樹是具有以下屬性的基于節(jié)點(diǎn)的二分樹數(shù)據(jù)結(jié)構(gòu)(1)對于二分搜索樹中的每一節(jié)點(diǎn),節(jié)點(diǎn)的左子樹中的節(jié)點(diǎn)具有比該節(jié)點(diǎn)的值小的值;(2)對于二分搜索樹中的每一節(jié)點(diǎn),節(jié)點(diǎn)的右子樹中的節(jié)點(diǎn)具有比該節(jié)點(diǎn)的值大的值;以及(3)對于二分搜索樹中的每一節(jié)點(diǎn),節(jié)點(diǎn)的左子樹和節(jié)點(diǎn)的右子樹也是二分搜索樹。紅黑樹是滿足以下附加要求的二分搜索樹(I)每一節(jié)點(diǎn)在概念上是紅的或黑的;(2)根節(jié)點(diǎn)是黑的;(3)所有葉節(jié)點(diǎn)都是黑的;(4)每一個(gè)紅節(jié)點(diǎn)的兩個(gè)子節(jié)點(diǎn)都是黑的;以及(5)從給定節(jié)點(diǎn)到該節(jié)點(diǎn)的任一子孫葉節(jié)點(diǎn)的每一簡單路徑都包含相同數(shù)量的黑節(jié)點(diǎn)。在該示例中,最小合并線程構(gòu)造紅黑樹以使得該紅黑樹中的每一節(jié)點(diǎn)都對應(yīng)于每一塊中的最小剩余行。例如,如果存在三個(gè)塊,相關(guān)屬性是排序依據(jù)列中的單元格中的值,且各塊中的最小剩余行具有值5、34和10,則最小合并線程構(gòu)造紅黑樹以使得該紅黑樹具有對應(yīng)于5的節(jié)點(diǎn)、對應(yīng)于34的節(jié)點(diǎn)和對應(yīng)于10的節(jié)點(diǎn)。在最小合并線程被喚醒后,該最小合并線程確定由該最小合并線程添加到最終塊的行數(shù)是否小于最小合并線程在經(jīng)排序塊中的各行中的份額中的行數(shù)。在各實(shí)施例中,最小合并線程在經(jīng)排序塊中的各行中具有各種份額。例如,在一些實(shí)施例中,如果經(jīng)排序塊中存在偶數(shù)數(shù)量的行,則最小合并線程的份額中的行數(shù)等于經(jīng)排序塊中的總行數(shù)除以二。在該示例中,如果經(jīng)排序塊中存在奇數(shù)數(shù)量的行,則最小合并線程的份額中的行數(shù)等于經(jīng)排序塊中的總行數(shù)除以二、下舍入、加一。在該示例中,如果經(jīng)排序塊中存在奇數(shù)數(shù)量的行,則最大合并線程的份額中的行數(shù)等于經(jīng)排序塊中的總行數(shù)除以二、下舍入。因此,在該示例中,在存在奇數(shù)數(shù)量的行的情況下,最小合并線程比最大合并線程多添加一行到最終塊。在其他實(shí)施例中,如果經(jīng)排序塊中存在奇數(shù)數(shù)量的行,則最大合并線程比最小合并線程多添加一行到最終塊。·如果最小合并線程添加到最終塊的行數(shù)小于最小合并線程在經(jīng)排序塊中的各行中的份額中的行數(shù)(504為“否”),則最小合并線程標(biāo)識最小行(506)。最小行是經(jīng)排序塊中的所有剩余行中的最小剩余行(即,經(jīng)排序塊中的所有行中不在最終塊中的最小行)。如上所述,在一些實(shí)施例中,可選擇多個(gè)排序依據(jù)列。例如,用戶可指示電子表格應(yīng)首先根據(jù)“城市”列來排序,然后根據(jù)“日期”列來排序。如果存在多個(gè)排序依據(jù)列并且如果兩行的排名最高的排序依據(jù)列中的單元格中的相關(guān)屬性是相同的,則最小合并線程通過比較這兩行的排名次高的排序依據(jù)列中的單元格中的相關(guān)屬性來標(biāo)識最小行。如果排名次高的排序依據(jù)列中的單元格的相關(guān)屬性是相同的,則最小合并線程通過比較這兩行的排名第三高的排序依據(jù)列的單元格中的相關(guān)屬性來標(biāo)識最小行。該比較過程繼續(xù)直到不再有排序依據(jù)列或直到最小合并線程將一行標(biāo)識為比另一行小。如果兩行的所有排序依據(jù)列中的單元格的相關(guān)屬性是等同的,則最小合并線程可將任一行標(biāo)識為最小行。在各實(shí)施例中,最小合并線程以各種方式標(biāo)識最小行。例如,在一些實(shí)施例中,最小合并線程如上所述地維護(hù)紅黑樹。在該示例中,對應(yīng)于紅黑樹中的最左邊的節(jié)點(diǎn)的行是尚未在最終塊中的最小行(即,最小行)。在其他實(shí)施例中,最小合并線程和最大合并線程維護(hù)如上所述的每一經(jīng)排序塊的索引值。在這些實(shí)施例中,最小合并線程掃描直接比最小合并線程的每一個(gè)索引值所指示的行大且未由最大合并線程的任一索引值指示的行。這一最小行是經(jīng)排序塊中的最小剩余行。在標(biāo)識最小行之后,最小合并線程將最小行插入最終塊(508)。最小合并線程以最終塊中的各行保持被適當(dāng)?shù)嘏判虻姆绞綄⒆钚⌒胁迦胱罱K塊。在各實(shí)施例中,最小合并線程以各種方式將最小行插入最終塊。例如,在一些實(shí)施例中,最終塊包括最小最終塊和最大最終塊。最小合并線程通過漸進(jìn)地將經(jīng)排序塊中的最小剩余行插入最小合并列表中大端來生成最小最終塊。最大合并線程通過漸進(jìn)地將經(jīng)排序塊中的最大剩余行插入最小合并列表中小端來生成最大最終塊。在該^例中,電子表格應(yīng)用108在經(jīng)排序塊中不存在剩余彳丁時(shí)通過將最大最終塊串接到最小最終塊的大端來生成最終塊。在另一示例中,最終塊是單個(gè)數(shù)據(jù)結(jié)構(gòu)。指針指示數(shù)據(jù)結(jié)構(gòu)的中間。最小合并線程在指針的一側(cè)插入各行,而最大合并線程在指針的另一側(cè)插入各行。以此方式,最終塊從中間向外生長。在又一示例中,最小合并線程和最大合并線程將排序索引分配給各行。行的排序索引指示數(shù)據(jù)項(xiàng)在最終塊中的位置。例如,最小合并線程可將排序索引“12”分配給一行以指示該行在最終塊中的第十二位置。在使用上述紅黑樹的實(shí)施例中,最小合并線程執(zhí)行若干動(dòng)作以便在最小合并線程將最小行插入最小最終塊之后維護(hù)紅黑樹。最初,最小合并線程將最左邊的節(jié)點(diǎn)從紅黑樹中移除,并且重新制定紅黑樹以使得該紅黑樹仍然是適當(dāng)?shù)募t黑樹。最小合并線程向紅黑樹添加對應(yīng)于包含最小行的經(jīng)排序塊中的新最小行的節(jié)點(diǎn)。在一些實(shí)施例中,最小合并線程維護(hù)指向經(jīng)排序塊中的每一最小剩余行的指針。使用這些指針可提高找到新的最小剩余行的效率。在使用上述索引值的實(shí)施例中,最小合并線程可執(zhí)行若干動(dòng)作以便在最小合并線程將最小行插入最小最終塊之后維護(hù)索引值。例如,最小合并線程可提升包含最小行的經(jīng)排序塊的最小合并線程的索引值,以使得該經(jīng)排序塊的最小合并線程的索引值指示該最小 行。在將最小行插入最終塊之后,最小合并線程再次確定由最小合并線程添加到最終塊的行數(shù)是否小于最小合并線程在經(jīng)排序塊中的各行中的份額中的行數(shù)(504)。如果最小合并線程添加到最終塊的行數(shù)小于最小合并線程在經(jīng)排序塊中的各行中的份額中的行數(shù)(504為“是”),則最小合并線程對新最小行執(zhí)行步驟506和508,以此類推。如果最小合并線程添加到最終塊的行數(shù)不小于最小合并線程在經(jīng)排序塊中的各行中的份額中的行數(shù)(504為“否”),則最小合并線程向電子表格應(yīng)用108提供完成指示(510)。最小合并線程然后轉(zhuǎn)回到休眠(512)。圖6是示出由最大合并線程執(zhí)行以便將一組經(jīng)排序塊中的最大剩余行插入最終塊的示例操作600的流程圖。如圖6的示例所示,操作600在電子表格應(yīng)用108喚醒最大合并線程(602)時(shí)開始。在各實(shí)施例中,電子表格應(yīng)用108以各種方式喚醒最大合并線程。例如,在一些實(shí)施例中,電子表格應(yīng)用108維護(hù)對能夠執(zhí)行操作600的休眠線程的引用。在一些實(shí)施例中,休眠線程可包括塊排序線程。換言之,一個(gè)塊排序線程可擔(dān)當(dāng)最大合并線程。在其他實(shí)施例中,電子表格應(yīng)用108只維護(hù)能夠執(zhí)行操作600的單個(gè)線程。為了喚醒最大合并線程,電子表格應(yīng)用108向可執(zhí)行操作600的線程提供喚醒事件。另外,電子表格應(yīng)用108向最大合并線程提供對一組經(jīng)排序塊的引用。在各實(shí)施例中,最大合并線程在該最大合并線程被喚醒時(shí)執(zhí)行各種動(dòng)作。例如,在一些實(shí)施例中,最大合并線程在該最大合并線程被喚醒時(shí)構(gòu)造紅黑樹。最大合并線程構(gòu)造紅黑樹以使得該紅黑樹包含對應(yīng)于各經(jīng)排序塊中的最大剩余行的節(jié)點(diǎn)。在最大合并線程被喚醒后,該最大合并線程確定由該最大合并線程添加到最終塊的行數(shù)是否小于最大合并線程在經(jīng)排序塊中的各行中的份額中的行數(shù)。如果最大合并線程添加到最終塊的行數(shù)小于最大合并線程在經(jīng)排序塊中的各行中的份額中的行數(shù)(604為“否”),則最大合并線程標(biāo)識最大行(606)。最大行是任一經(jīng)排序塊中的尚未在最終塊中的最大行(即,任一塊中的最大剩余行)。
如上所述,在一些實(shí)施例中,可選擇多個(gè)排序依據(jù)列。如果存在多個(gè)排序依據(jù)列并且如果兩行的排名最高的排序依據(jù)列中的單元格中相關(guān)屬性是相同的,則最大合并線程通過比較這兩行的排名次高的排序依據(jù)列中的單元格中的相關(guān)屬性來標(biāo)識最大行。如果排名次高的排序依據(jù)列中的單元格的相關(guān)屬性是相同的,則最大合并線程通過比較這兩行的排名第三高的排序依據(jù)列的單元格中的相關(guān)屬性來標(biāo)識最大行。該比較過程繼續(xù)直到不再有排序依據(jù)列或直到最大合并線程將一行標(biāo)識為比另一行大。如果這兩行的所有排序依據(jù)列中的單元格的相關(guān)屬性是等同的,則最大合并線程可將任一行標(biāo)識為最大行。在各實(shí)施例中,最大合并線程以各種方式標(biāo)識最大行。例如,在最大合并線程維護(hù)如上所述的紅黑樹的實(shí)施例中,最大合并線程維護(hù)紅黑樹以使得紅黑樹包含對應(yīng)于每一經(jīng)排序塊中的最大行的節(jié)點(diǎn)。在該示例中,紅黑樹中的最右邊的節(jié)點(diǎn)對應(yīng)于最大行。在其他實(shí)施例中,最大合并線程和最小合并線程維護(hù)如上所述的每一經(jīng)排序塊的索引值。在這些實(shí)施例中,最大合并線程掃描直接比最大合并線程的索引值所指示的行小且未由最小合并線程的任一索引值指示的行。這一最大行是各經(jīng)排序塊中的最大剩余行。在標(biāo)識最大行之后,最大合并線程將最大行插入最終塊(608 )。最大合并線程以最終塊中的各行保持被適當(dāng)?shù)嘏判虻姆绞綄⒆畲笮胁迦胱罱K塊。在各實(shí)施例中,最大合并線程以各種方式將最大行插入最終塊。例如,最大合并線程能夠以與最小合并線程用來將最小行插入最終塊的方式相似的方式將最大行插入最終塊。在使用上述紅黑樹的實(shí)施例中,最大合并線程執(zhí)行若干動(dòng)作以便在最大合并線程將最大行插入最終塊之后維護(hù)紅黑樹。最初,最大合并線程將最右邊的節(jié)點(diǎn)從紅黑樹中移除,并且重新制定紅黑樹以使得該紅黑樹仍然是適當(dāng)?shù)募t黑樹。最大合并線程然后向紅黑樹添加對應(yīng)于包含最大行的經(jīng)排序塊中的新最大行的節(jié)點(diǎn)。在一些實(shí)施例中,最大合并線程維護(hù)指向各經(jīng)排序塊中的每一最大剩余行的指針。使用這些指針可提高找到新的最大剩余行的效率。在將最大行插入最終塊之后,最大合并線程再次確定由最大合并線程添加到最終塊的行數(shù)是否小于最大合并線程在經(jīng)排序塊中的各行中的份額中的行數(shù)(604)。如果最大合并線程添加到最終塊的行數(shù)小于最大合并線程在經(jīng)排序塊中的各行中的份額中的行數(shù)(504為“是”),則最大合并線程對新最大行重復(fù)步驟606和608,以此類推。如果最大合并線程添加到最終塊的行數(shù)不小于最大合并線程在經(jīng)排序塊中的各行中的份額中的行數(shù)(604為“否”),則最大合并線程向電子表格應(yīng)用108提供完成指示(610)。最大合并線程然后轉(zhuǎn)到休眠(612)。圖7是示出示例計(jì)算設(shè)備700的框圖。在一些實(shí)施例中,計(jì)算系統(tǒng)100是使用類似計(jì)算設(shè)備700的一個(gè)或多個(gè)計(jì)算設(shè)備來實(shí)現(xiàn)的。應(yīng)當(dāng)理解,在其他實(shí)施例中,計(jì)算系統(tǒng)100是使用還具有除了圖7的示例所示的硬件組件之外的硬件組件的計(jì)算設(shè)備來實(shí)現(xiàn)的。在不同的實(shí)施例中,計(jì)算設(shè)備以不同方式實(shí)現(xiàn)。例如,在圖7的示例中,計(jì)算設(shè)備700包括存儲(chǔ)器702、處理系統(tǒng)704、輔助存儲(chǔ)設(shè)備706、網(wǎng)絡(luò)接口卡708、視頻接口 710、顯示設(shè)備712、外部組件接口 714、外部存儲(chǔ)設(shè)備716、輸入設(shè)備718、打印機(jī)720和通信介質(zhì)722。在其他實(shí)施例中,計(jì)算設(shè)備是使用更多或更少的硬件組件來實(shí)現(xiàn)的。例如,在另一示例實(shí)施例中,計(jì)算設(shè)備不包括視頻接口、顯示設(shè)備、外部存儲(chǔ)設(shè)備或輸入設(shè)備。存儲(chǔ)器702包括一個(gè)或多個(gè)能夠存儲(chǔ)數(shù)據(jù)和/或指令的計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)。計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)是存儲(chǔ)可由計(jì)算設(shè)備讀取的數(shù)據(jù)和/或軟件指令的設(shè)備或制品。在不同的實(shí)施例中,存儲(chǔ)器702以不同的方式實(shí)現(xiàn)。例如,在各實(shí)施例中,存儲(chǔ)器702是使用各種類型的計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)來實(shí)現(xiàn)的。示例類型的計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)包括,但不限于動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DRAM)、雙倍數(shù)據(jù)率同步動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(DDRSDRAM)、減少等待時(shí)間的DRAM、DDR2SDRAM、DDR3SDRAM、Rambus RAM、固態(tài)存儲(chǔ)器、閃存、只讀存儲(chǔ)器(ROM)、電可擦除可編程ROM和存儲(chǔ)數(shù)據(jù)的其他類型的設(shè)備和/或制品。處理系統(tǒng)704包括選擇性地執(zhí)行軟件指令的一個(gè)或多個(gè)物理集成電路。在各種實(shí)施例中,處理系統(tǒng)704以各種方式實(shí)現(xiàn)。例如,在一個(gè)示例實(shí)施例中,處理系統(tǒng)704被實(shí)現(xiàn)為一個(gè)或多個(gè)處理核。例如,在該示例實(shí)施例中,處理系統(tǒng)704可被實(shí)現(xiàn)為一個(gè)或多個(gè)IntelCore 2微處理器。在另一不例實(shí)施例中,處理系統(tǒng)704可被實(shí)現(xiàn)為一個(gè)或多個(gè)單獨(dú)的微處理器。在又一示例實(shí)施例中,處理系統(tǒng)704被實(shí)現(xiàn)為提供專用功能的ASIC。在又另一示例實(shí)施例中,處理系統(tǒng)704通過使用ASIC和通過執(zhí)行軟件指令來提供專用功能。在不同的實(shí)施例中,處理系統(tǒng)704執(zhí)行不同的指令集中軟件指令。例如,在各實(shí)施例中,處理系統(tǒng)704執(zhí)行指令集中的軟件指令,所述指令集為諸如x86指令集、POWER指令 集、RISC指令集、SPARC指令集、IA-64指令集、MIPS指令集,和/或其他指令集。輔助存儲(chǔ)設(shè)備706包括一個(gè)或多個(gè)計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)。輔助存儲(chǔ)設(shè)備706存儲(chǔ)了所述處理系統(tǒng)704不能直接訪問的數(shù)據(jù)和軟件指令。換言之,處理系統(tǒng)704執(zhí)行I/O操作以從輔助存儲(chǔ)設(shè)備706處檢索數(shù)據(jù)和/或軟件指令。在各實(shí)施例中,輔助存儲(chǔ)設(shè)備706由各種類型的計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)來實(shí)現(xiàn)。例如,輔助存儲(chǔ)設(shè)備706可以由一個(gè)或多個(gè)磁盤、磁帶驅(qū)動(dòng)器、CD-ROM盤、DVD-ROM盤、藍(lán)光盤、固態(tài)存儲(chǔ)設(shè)備、柏努利錄音帶(Bernoulli cartridges)和/或其他類型的計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)來實(shí)現(xiàn)。網(wǎng)絡(luò)接口卡708使得計(jì)算設(shè)備700能夠?qū)?shù)據(jù)發(fā)送給計(jì)算機(jī)通信網(wǎng)絡(luò)并從計(jì)算機(jī)通信網(wǎng)絡(luò)接收數(shù)據(jù)。在不同的實(shí)施例中,網(wǎng)絡(luò)接口卡708以不同的方式實(shí)現(xiàn)。例如,在各種實(shí)施例中,網(wǎng)絡(luò)接口卡708可以被實(shí)現(xiàn)為太網(wǎng)接口、令牌環(huán)網(wǎng)絡(luò)接口、光纖網(wǎng)絡(luò)接口、無線網(wǎng)絡(luò)接口(例如,WiFi、WiMax等)、或另一類型的網(wǎng)絡(luò)接口。視頻接口 710使計(jì)算設(shè)備700能夠?qū)⒁曨l信息輸出給顯示設(shè)備712。在不同的實(shí)施例中,視頻接口 710以不同的方式實(shí)現(xiàn)。例如,在一個(gè)示例實(shí)施例中,視頻接口 710被集成到計(jì)算設(shè)備700的主板上。在另一個(gè)示例實(shí)施例中,視頻接口 710是視頻擴(kuò)展卡。示例類型的視頻擴(kuò)展卡包括由安大略省馬克姆市的ATI Technologies有限公司制造的Radeon圖形卡、由加利福尼亞州圣克拉拉市的Nvidia (英偉達(dá))公司制造的Geforce圖形卡和其他類型的圖形卡。在各實(shí)施例中,顯示設(shè)備712被實(shí)現(xiàn)為各種類型的顯示設(shè)備。示例類型的顯示設(shè)備包括但不限于陰極射線管顯示器、IXD顯示面板、等離子屏顯示面板、觸敏顯示面板、LED屏幕、投影儀和其他類型的顯示設(shè)備。在各實(shí)施例中,視頻接口 710以各種方式與顯示設(shè)備712通信。例如,在各實(shí)施例中,視頻接口 710可以經(jīng)由通用串行總線(USB)連接器、VGA連接器、數(shù)字可視接口(DVI)連接器、S視頻連接器、高清多媒體接口(HDMI)接口、顯示端口連接器或其他類型的連接來與顯示設(shè)備712通信。外部組件接口 714使計(jì)算設(shè)備700能夠與外部設(shè)備通信。在各實(shí)施例中,外部組件接口 714以不同的方式實(shí)現(xiàn)。例如,在一個(gè)示例實(shí)施例中,外部組件接口 714是USB接口。在其他示例實(shí)施例中,計(jì)算設(shè)備700是火線接口、串行端口接口、并行端口接口、PS/2接口和/或使計(jì)算設(shè)備700能夠與外部組件通信的另一種類型的接口。在不同的實(shí)施例中,外部組件接口 714使計(jì)算設(shè)備700能夠與不同的外部組件通信。例如,在圖7的示例中,外部組件接口 714使計(jì)算設(shè)備700能夠與外部存儲(chǔ)設(shè)備716、輸入設(shè)備718和打印機(jī)720通信。在其他實(shí)施例中,外部組件接口 714使計(jì)算設(shè)備700能夠與更多或更少的外部組件通信。其他示例類型的外部組件包括但不限于揚(yáng)聲器、電話充電插口、調(diào)制解調(diào)器、媒體播放器底座、其他計(jì)算設(shè)備、掃描儀、數(shù)碼相機(jī)、指紋讀取器、以及可被連接到計(jì)算設(shè)備700的其他設(shè)備。外部存儲(chǔ)設(shè)備716是包括一個(gè)或多個(gè)計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)的外部組件。計(jì)算設(shè)備700的不同實(shí)現(xiàn)與不同類型的外部存儲(chǔ)設(shè)備對接。示例類型的外部存儲(chǔ)設(shè)備包括但不局限于磁帶驅(qū)動(dòng)器、閃存模塊、磁盤驅(qū)動(dòng)器、光盤驅(qū)動(dòng)器、閃存單元、zip盤驅(qū)動(dòng)器、自動(dòng)換碟機(jī)以及包括一個(gè)或多個(gè)計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì)的其他類型的設(shè)備。輸入設(shè)備718是向計(jì)算設(shè)備700提供用戶輸入的外部組件。計(jì)算設(shè)備700的不同實(shí)現(xiàn)與不同類型的輸入設(shè)備 對接。示例類型的輸入設(shè)備包括,但不局限于,鍵盤、鼠標(biāo)、軌跡球、筆輸入設(shè)備、按鍵式撥號盤、麥克風(fēng)、操縱桿、觸敏顯示屏以及將用戶輸入提供給計(jì)算設(shè)備700的其他類型的設(shè)備。打印機(jī)720是將數(shù)據(jù)打印到紙張的外部設(shè)備。計(jì)算設(shè)備700的不同實(shí)現(xiàn)與不同類型的打印機(jī)對接。示例類型的打印機(jī)包括但不限于激光打印機(jī)、噴墨打印機(jī)、照片打印機(jī)、復(fù)印機(jī)、傳真機(jī)、票據(jù)打印機(jī)、點(diǎn)陣打印機(jī)或?qū)?shù)據(jù)打印到紙張的其他類型的設(shè)備。通信介質(zhì)722方便了在計(jì)算設(shè)備700的硬件組件之間的通信。在不同的實(shí)施例中,通信介質(zhì)722方便了在計(jì)算設(shè)備700的不同組件之間的通信。例如,在圖7的示例中,通信介質(zhì)722方便了在存儲(chǔ)器702、處理系統(tǒng)704、輔助存儲(chǔ)設(shè)備706、網(wǎng)絡(luò)接口卡708、視頻接口 710以及外部組件接口 714之間的通信。在計(jì)算設(shè)備700的不同的實(shí)現(xiàn)中,通信介質(zhì)722可以以不同的方式來實(shí)現(xiàn).例如,在計(jì)算設(shè)備700的不同的實(shí)現(xiàn)中,通信介質(zhì)722可作為PCI總線、PCIExpress總線、加速圖形端口(AGP)總線、Infiniband互連、串行高級技術(shù)附件(ATA)互連、并行ATA互連、光纖通道互連、USB總線、小型計(jì)算系統(tǒng)接口(SCSI)接口,或其他類型的通信媒介來實(shí)現(xiàn)。存儲(chǔ)器702存儲(chǔ)了各種類型的數(shù)據(jù)和/或軟件指令。例如,在圖7的示例中,存儲(chǔ)器702存儲(chǔ)了基本輸入/輸出系統(tǒng)(BIOS) 724、操作系統(tǒng)726、應(yīng)用軟件728和程序數(shù)據(jù)730。BIOS 724包括當(dāng)由處理系統(tǒng)704執(zhí)行時(shí)使得計(jì)算設(shè)備700啟動(dòng)的一組軟件指令。操作系統(tǒng)726包括當(dāng)由處理系統(tǒng)704執(zhí)行時(shí)使得計(jì)算設(shè)備700提供操作系統(tǒng)的一組軟件指令,所述操作系統(tǒng)協(xié)調(diào)計(jì)算設(shè)備700的活動(dòng)和資源的共享。示例類型的操作系統(tǒng)包括但不限于微軟 Windows 、Linux、Unix、蘋果 OS X、蘋果 OS X iPhone、Palm webOS、Palm OS、谷歌Chrome OS、谷歌Android OS等等。應(yīng)用軟件728包括一組軟件指令,該組軟件指令在被處理系統(tǒng)704執(zhí)行時(shí)使得計(jì)算設(shè)備700向計(jì)算設(shè)備700的用戶提供應(yīng)用。程序數(shù)據(jù)730是應(yīng)用軟件728生成和/或使用的數(shù)據(jù)。上述各實(shí)施例僅作為說明提供,并且不應(yīng)被解釋為限制。本領(lǐng)域的技術(shù)人員將容易地識別出可能不遵循在此說明并描述的示例實(shí)施例和應(yīng)用而做出的各種修改和變化。例如,在圖中示出的操作僅僅是示例。在各種實(shí)施例中,類似的操作可以包括比在圖中所示出的那些步驟更多或更少的步驟。此外,在其他實(shí)施例中,類似的操作可以包括與在圖中所示出的那些操作步驟不相同的順序的 步驟。
權(quán)利要求
1.一種方法,包括 由計(jì)算系統(tǒng)將電子表格中的數(shù)據(jù)項(xiàng)分成多個(gè)塊; 使用多個(gè)線程來對所述塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序; 在對所述塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序后,使用多個(gè)線程來將所述塊合并成最終塊,所述最終塊包含所述電子表格中的每一個(gè)數(shù)據(jù)項(xiàng);以及 顯示所述電子表格的經(jīng)排序版本,其中所述電子表格中的數(shù)據(jù)項(xiàng)具有與所述最終塊中的數(shù)據(jù)項(xiàng)相同的次序。
2.如權(quán)利要求I所述的方法,其特征在于,還包括 基于所述電子表格中的數(shù)據(jù)項(xiàng)的數(shù)量來確定適當(dāng)?shù)膲K大?。徊⑶移渲兴鲭娮颖砀裰械臄?shù)據(jù)項(xiàng)被分成所述多個(gè)塊,以使得所述塊中沒有一個(gè)塊包含比所述適當(dāng)?shù)膲K大小更多的數(shù)據(jù)項(xiàng),并且所述塊中只有一個(gè)塊被允許包含比所述適當(dāng)?shù)膲K大小更少的數(shù)據(jù)項(xiàng)。
3.如權(quán)利要求2所述的方法,其特征在于,確定所述適當(dāng)?shù)膲K大小包括當(dāng)所述電子表格中的數(shù)據(jù)項(xiàng)的總數(shù)大于一個(gè)閾值且小于或等于另一個(gè)閾值時(shí),確定所述適當(dāng)?shù)膲K大小是給定大小。
4.權(quán)利要求I所述的方法,其特征在于,所述最終塊中的數(shù)據(jù)項(xiàng)針對多個(gè)排序依據(jù)列被適當(dāng)?shù)嘏判颉?br> 5.如權(quán)利要求I所述的方法,其特征在于,還包括 確定所述電子表格中的數(shù)據(jù)項(xiàng)的總數(shù)是否超過下限;以及 當(dāng)所述電子表格中的數(shù)據(jù)項(xiàng)的總數(shù)未超過所述下限時(shí),使用單個(gè)線程來對所述電子表格中的數(shù)據(jù)項(xiàng)進(jìn)行排序。
6.如權(quán)利要求I所述的方法,其特征在于 所述方法還包括在對所述塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序之前,確定用于所述電子表格的塊排序線程的適當(dāng)數(shù)量; 使用多個(gè)線程來對所述塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序包括使用所述適當(dāng)數(shù)量的塊排序線程來對所述塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序; 當(dāng)所述塊的數(shù)量小于或等于處理系統(tǒng)中的處理單元的數(shù)量時(shí),所述塊排序線程的適當(dāng)數(shù)量等于所述塊的數(shù)量; 當(dāng)所述塊的數(shù)量大于或等于所述處理系統(tǒng)中的處理單元的數(shù)量時(shí),所述塊排序線程的適當(dāng)數(shù)量等于所述處理系統(tǒng)中的處理單元的數(shù)量。
7.如權(quán)利要求I所述的方法,其特征在于,使用多個(gè)線程來將所述塊合并成所述最終塊包括 喚醒漸進(jìn)地將經(jīng)排序塊中的最小數(shù)據(jù)項(xiàng)插入所述最終塊的最小合并線程;以及 喚醒漸進(jìn)地將所述經(jīng)排序塊中的最大數(shù)據(jù)項(xiàng)插入所述最終塊的最大合并線程。
8.如權(quán)利要求7所述的方法,其特征在于 所述最小合并線程使用第一紅黑樹來標(biāo)識所述經(jīng)排序塊中的最小數(shù)據(jù)項(xiàng);以及 所述最大合并線程使用第二紅黑樹來標(biāo)識所述經(jīng)排序塊中的最大數(shù)據(jù)項(xiàng)。
9.如權(quán)利要求7所述的方法,其特征在于 用于對所述塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序的所述多個(gè)線程并發(fā)操作;并且所述最小合并線程和所述最大合并線程并發(fā)操作。
10.一種計(jì)算系統(tǒng),包括 包括多個(gè)處理單元的處理系統(tǒng);以及 存儲(chǔ)計(jì)算機(jī)可讀指令的數(shù)據(jù)存儲(chǔ)系統(tǒng),所述計(jì)算機(jī)可讀指令在由所述處理單元中的一個(gè)或多個(gè)處理單元執(zhí)行時(shí)使所述計(jì)算系統(tǒng) 將電子表格中的數(shù)據(jù)項(xiàng)分成多個(gè)塊; 基于所述電子表格的排序依據(jù)線中的單元格的相關(guān)屬性,使用多個(gè)線程來對所述塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序; 使用多個(gè)線程來將所述塊合并成最終塊,所述最終塊包含所述電子表格中的每一個(gè)數(shù)據(jù)項(xiàng);以及 顯示所述電子表格的經(jīng)排序版本,其中所述電子表格中的數(shù)據(jù)項(xiàng)具有與所述最終塊中的數(shù)據(jù)項(xiàng)相同的次序。
11.如權(quán)利要求10所述的計(jì)算系統(tǒng),其特征在于,所述計(jì)算機(jī)可讀指令在由所述處理單元中的一個(gè)或多個(gè)處理單元執(zhí)行時(shí),使所述計(jì)算系統(tǒng)基于所述電子表格中的數(shù)據(jù)項(xiàng)的數(shù)量來確定適當(dāng)?shù)膲K大小,其中所述塊中沒有一個(gè)塊具有比所述適當(dāng)?shù)膲K大小更多的數(shù)據(jù)項(xiàng)。
12.如權(quán)利要求10所述的計(jì)算系統(tǒng),其特征在于,所述計(jì)算機(jī)可讀指令在由所述處理單元中的一個(gè)或多個(gè)處理單元執(zhí)行時(shí),還使所述計(jì)算系統(tǒng)確定塊排序線程的適當(dāng)數(shù)量, 當(dāng)所述塊的數(shù)量小于或等于所述處理系統(tǒng)中的處理單元的數(shù)量時(shí),所述塊排序線程的適當(dāng)數(shù)量等于所述塊的數(shù)量, 當(dāng)所述塊的數(shù)量大于或等于所述處理系統(tǒng)中的處理單元的數(shù)量時(shí),所述塊排序線程的適當(dāng)數(shù)量等于所述處理系統(tǒng)中的處理單元的數(shù)量,并且 所述計(jì)算系統(tǒng)使用所述適當(dāng)數(shù)量的塊排序線程來對所述塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序。
13.如權(quán)利要求10所述的計(jì)算系統(tǒng),其特征在于,為了使用多個(gè)線程來將所述塊合并成所述最終塊,所述計(jì)算機(jī)可讀指令在由所述處理單元中的一個(gè)或多個(gè)處理單元執(zhí)行時(shí),使所述計(jì)算系統(tǒng) 喚醒漸進(jìn)地將經(jīng)排序塊中的最小數(shù)據(jù)項(xiàng)插入所述最終塊的最小合并線程;以及 喚醒漸進(jìn)地將所述經(jīng)排序塊中的最大數(shù)據(jù)項(xiàng)插入所述最終塊的最大合并線程。
14.如權(quán)利要求13所述的計(jì)算系統(tǒng),其特征在于 所述最小合并線程和所述最大合并線程并發(fā)操作;并且 用于對所述塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序的所述多個(gè)線程并發(fā)操作。
15.一種存儲(chǔ)計(jì)算機(jī)可讀指令的計(jì)算機(jī)可讀數(shù)據(jù)存儲(chǔ)介質(zhì),所述計(jì)算機(jī)可讀指令在由計(jì)算系統(tǒng)的處理系統(tǒng)中的一個(gè)或多個(gè)處理單元執(zhí)行時(shí),使所述計(jì)算系統(tǒng) 確定電子表格中的數(shù)據(jù)項(xiàng)的總數(shù)是否超過下限; 當(dāng)所述電子表格中的數(shù)據(jù)項(xiàng)的總數(shù)未超過所述下限時(shí),使用單個(gè)線程來對所述電子表格中的數(shù)據(jù)項(xiàng)進(jìn)行排序; 當(dāng)所述電子表格中的數(shù)據(jù)項(xiàng)的總數(shù)等于或超過所述下限時(shí) 當(dāng)所述電子表格中的數(shù)據(jù)項(xiàng)的總數(shù)大于第一閾值且小于或等于第二閾值時(shí),確定適當(dāng)?shù)膲K大小是第一大?。划?dāng)所述電子表格中的數(shù)據(jù)項(xiàng)的總數(shù)大于第二閾值時(shí),確定所述適當(dāng)?shù)膲K大小是第二大小,所述第二大小大于所述第一大?。? 將所述電子表格中的數(shù)據(jù)項(xiàng)分成多個(gè)塊,所述塊中沒有一個(gè)塊包含比所述適當(dāng)?shù)膲K大小更多的數(shù)據(jù)項(xiàng),并且所述塊中只有一個(gè)塊被允許包含比所述適當(dāng)?shù)膲K大小更少的數(shù)據(jù)項(xiàng); 確定用于所述電子表格的塊排序線程的適當(dāng)數(shù)量, 當(dāng)所述塊的數(shù)量小于或等于所述處理系統(tǒng)中的處理單元的數(shù)量時(shí),所述塊排序線程的適當(dāng)數(shù)量等于所述塊的數(shù)量, 當(dāng)所述塊的數(shù)量大于或等于所述處理系統(tǒng)中的處理單元的數(shù)量時(shí),所述塊排序線程的適當(dāng)數(shù)量等于所述處理系統(tǒng)中的處理單元的數(shù)量, 使用多個(gè)塊排序線程來對所述塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序,所述塊排序線程的數(shù)量等于所述塊排序線程的適當(dāng)數(shù)量;以及 在所述塊排序線程已經(jīng)對所述塊中的每一塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序之后,使用最小合并線程和最大合并線程來將所述塊中的數(shù)據(jù)項(xiàng)合并成最終塊,所述最終塊包含所述電子表 格中的每一個(gè)數(shù)據(jù)項(xiàng),所述最小合并線程漸進(jìn)地將經(jīng)排序塊中的最小數(shù)據(jù)項(xiàng)插入所述最終塊,所述最大合并線程漸進(jìn)地將所述經(jīng)排序塊中的最大數(shù)據(jù)項(xiàng)插入所述最終塊;以及 顯示所述電子表格的經(jīng)排序版本,其中所述電子表格中的數(shù)據(jù)項(xiàng)具有與所述最終塊中的數(shù)據(jù)項(xiàng)相同的次序。
全文摘要
為了對電子表格執(zhí)行排序操作,將電子表格中的數(shù)據(jù)項(xiàng)分成多個(gè)塊。然后使用多個(gè)線程來對各塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序。在對各塊中的數(shù)據(jù)項(xiàng)進(jìn)行排序之后,使用多個(gè)線程來將各塊合并成最終塊。最終塊包含電子表格中的每一個(gè)數(shù)據(jù)項(xiàng)。然后顯示電子表格的經(jīng)排序版本。電子表格的經(jīng)排序版本中的數(shù)據(jù)項(xiàng)具有與最終塊中的數(shù)據(jù)項(xiàng)相同的次序。
文檔編號G06F17/00GK102918496SQ201180020202
公開日2013年2月6日 申請日期2011年3月30日 優(yōu)先權(quán)日2010年4月23日
發(fā)明者W·K·P·A·粱, C·B·羅特席勒, S·-P·吳, R·G·比爾布萊爾 申請人:微軟公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會(huì)獲得點(diǎn)贊!
1
贵州省| 黄山市| 马公市| 南溪县| 荔波县| 云林县| 无锡市| 宁强县| 胶南市| 临湘市| 望都县| 桦南县| 齐河县| 霍邱县| 东阳市| 苍山县| 乡宁县| 偏关县| 台中市| 岳普湖县| 利津县| 盐山县| 明溪县| 炉霍县| 濮阳县| 喜德县| 崇仁县| 丹巴县| 会理县| 阆中市| 汽车| 临西县| 缙云县| 遂溪县| 方城县| 基隆市| 新乐市| 灵宝市| 宜黄县| 洮南市| 辽宁省|