專利名稱:多線程無代碼用戶定義函數(shù)的制作方法
多線程無代碼用戶定義函數(shù)背景在會(huì)計(jì)中,表格是具有組織關(guān)于交易的數(shù)據(jù)以供人檢查的列和行的大幅紙張。表 格在單頁紙上示出例如,成本、收入、稅、或其他相關(guān)數(shù)據(jù)以供經(jīng)理在做決策時(shí)檢查。表格已被計(jì)算機(jī)化成“電子表格”。電子表格將信息組織成軟件定義的列和行。例 如,電子表格中的信息然后可通過公式來求和以給出總數(shù)。運(yùn)行電子表格的計(jì)算機(jī)程序?qū)?來自許多源的信息歸納在一個(gè)地方并以給定格式呈現(xiàn)該信息。電子表格幫助決策制定者查 看組織的財(cái)務(wù)“全景”。概述提供本概述是為了以簡(jiǎn)化的形式介紹將在以下詳細(xì)描述中進(jìn)一步描述的一些概 念。本概述并非旨在標(biāo)識(shí)出所要求保護(hù)的主題的關(guān)鍵特征或必要特征。本概述亦非旨在用 于限制所要求保護(hù)的主題的范圍??商峁┮环N多線程無代碼用戶定義函數(shù)(UDF)。首先,可以從對(duì)應(yīng)于調(diào)用無代碼 UDF的電子表格的計(jì)算線程接收至少一個(gè)輸入值。然后,可將該至少一個(gè)輸入值保存在包含 無代碼UDF的UDF存儲(chǔ)區(qū)域之外的線程存儲(chǔ)區(qū)域中。接著,可執(zhí)行無代碼UDF,包括使用無 代碼UDF中的至少一個(gè)公式以及來自線程存儲(chǔ)區(qū)域的至少一個(gè)輸入值來執(zhí)行至少一個(gè)計(jì) 算。然后可將響應(yīng)于執(zhí)行無代碼UDF而產(chǎn)生的至少一個(gè)輸出值返回到對(duì)應(yīng)于調(diào)用該無代碼 UDF的電子表格的計(jì)算線程。前述概括描述和以下詳細(xì)描述兩者都提供示例且都只是說明性的。因此,前述概 括描述和以下詳細(xì)描述不應(yīng)被認(rèn)為是限制性的。此外,除了此處所闡明的那些之外還可提 供其他特征或變型。例如,各實(shí)施方式可涉及在詳細(xì)描述中描述的各種特征組合和子組合。附圖簡(jiǎn)述合并在本發(fā)明中并構(gòu)成其一部分的附圖示出本發(fā)明的各種實(shí)施方式。在附圖中
圖1是一操作環(huán)境的框圖;圖2是示出跨電子表格的一部分的無代碼UDF的圖示;圖3是示出可調(diào)用無代碼UDF的電子表格的圖示;圖4是用于提供多線程無代碼用戶定義函數(shù)的方法的流程圖;圖5是示出跨電子表格的一部分的無代碼UDF的圖示;圖6是示出按UDF數(shù)據(jù)結(jié)構(gòu)的圖示;圖7是示出按調(diào)用數(shù)據(jù)結(jié)構(gòu)的圖示;圖8是示出用于正態(tài)曲線UDF的按單元格數(shù)據(jù)結(jié)構(gòu)的圖示;以及圖9是包括計(jì)算設(shè)備的系統(tǒng)的框圖。詳細(xì)描述以下詳細(xì)描述參考各個(gè)附圖。只要可能,就在附圖和以下描述中使用相同的附圖 標(biāo)記來指示相同或類似的要素。盡管可能描述了本發(fā)明的各實(shí)施方式,但修改、改編和其他 實(shí)現(xiàn)也是可能的。例如,可以對(duì)附圖中所示出的要素進(jìn)行置換、添加、或修改,且可以通過對(duì) 所公開的方法置換、重新排序、或添加階段來修改此處所描述的方法。因此,以下詳細(xì)描述并不限制本發(fā)明。相反,本發(fā)明的正確范圍由所附權(quán)利要求書確定。圖1示出了用于通過多個(gè)處理器110來計(jì)算電子表格105的電子表格計(jì)算系統(tǒng) 100。例如,電子表格應(yīng)用程序(例如,如將在下文中參考圖9更詳細(xì)地描述的電子表格應(yīng)用 程序920)可將數(shù)據(jù)組織成由列和行定義的單元格。用戶可例如通過公式來對(duì)數(shù)據(jù)采取動(dòng) 作以給出所需結(jié)果。對(duì)用戶可用的某些公式(即,標(biāo)準(zhǔn)函數(shù))可由電子表格應(yīng)用程序的開 發(fā)者來定義。除了標(biāo)準(zhǔn)函數(shù)之外,電子表格應(yīng)用程序的開發(fā)者可允許無代碼用戶定義函數(shù) (UDF)。根據(jù)本發(fā)明的各實(shí)施例,無代碼UDF可包括其中用戶可以在單個(gè)函數(shù)(例如,由該 用戶定義)中封裝可跨電子表格105中的大單元格區(qū)域的模型的特征。無代碼UDF可包括 或以其他方式包含由電子表格應(yīng)用程序的開發(fā)者提供的標(biāo)準(zhǔn)函數(shù)并且也可包括對(duì)其他UDF 的調(diào)用。在定義無代碼UDF時(shí),用戶可指定可涵蓋模型的電子表格部分以及輸入單元格和 輸出單元格位置。然后可以例如從任何其他公式調(diào)用函數(shù)。根據(jù)本發(fā)明的各實(shí)施例,多線程計(jì)算可包括其中執(zhí)行電子表格的計(jì)算的計(jì)算工作 在多個(gè)處理器(例如,多個(gè)處理器110)之間劃分的特征。該劃分可允許每一個(gè)處理器(例 如,第一處理器115、第二處理器120、以及第三處理器125)執(zhí)行某一計(jì)算工作部分。通過 在多個(gè)處理器110之間劃分計(jì)算工作,可以在比用單個(gè)處理器更少的時(shí)間內(nèi)計(jì)算電子表格 105。此外,多線程計(jì)算可對(duì)可以在電子表格計(jì)算期間執(zhí)行的任何函數(shù)施加限制。例如,多 線程計(jì)算可以是“線程安全”的。線程安全多線程計(jì)算可以不干擾多個(gè)處理器中的執(zhí)行相 同或不同任務(wù)的其他處理器。根據(jù)本發(fā)明的各實(shí)施例,無代碼UDF可以在在多線程計(jì)算期 間運(yùn)行時(shí)起作用。此外,本發(fā)明的各實(shí)施例可包括附加元素,包括如下文中更詳細(xì)地描述的 ARGUMENT (自變量)函數(shù)和向量化支持。圖2示出了跨電子表格200中的由例如用戶指定的部分以及所指定的輸入和輸出 單元格的無代碼UDF。圖2的示例無代碼UDF可將數(shù)量從一個(gè)單位制換算到另一個(gè)單位制。 如圖2所示,用戶可指定無代碼UDF被包含在范圍Al :G4中,或者可指定無代碼UDF包括整 個(gè)電子表格。用戶可將A2、B2和C2指定為輸入單元格,并將A4指定為輸出單元格。圖2 的示例無代碼UDF中的其他單元格可包括無代碼UDF的“計(jì)算模式”。用戶可將圖2的無代 碼UDF命名為“CONVERT (換算)”。圖3示出了可調(diào)用在圖2中定義的無代碼UDF的電子表格300。如圖3所示, 在圖2所示的無代碼UDF范圍之外,在例如另一表上,用戶可使用以上參考圖2定義的 "CONVERT"UDF來輸入若干公式。在執(zhí)行電子表格300時(shí),電子表格應(yīng)用程序920可以在電 子表格300調(diào)用圖2中所定義的無代碼UDF時(shí)操縱電子表格200的輸入單元格中的數(shù)據(jù)。 然而,當(dāng)完成電子表格200時(shí),電子表格應(yīng)用程序920可將電子表格200置回在操縱電子表 格200的輸入單元格中的數(shù)據(jù)之前發(fā)現(xiàn)的狀態(tài)。另外,可以存在對(duì)C00NVERT UDF的許多調(diào) 用。因?yàn)殡娮颖砀駪?yīng)用程序920可提供多線程計(jì)算,所以可以同時(shí)對(duì)CONVERT UDF的調(diào)用 中的若干個(gè)求值。因此,若干個(gè)同時(shí)調(diào)用不應(yīng)彼此干擾。圖4是闡明根據(jù)本發(fā)明的各實(shí)施例的用于提供多線程無代碼UDF的方法400中所 涉及的各概略階段的流程圖。方法400可使用如將在以下參考圖9更詳細(xì)地描述的計(jì)算設(shè) 備900來實(shí)現(xiàn)。以下將更詳細(xì)地描述實(shí)現(xiàn)方法400的各階段的方式。方法400可開始于起 始框405并繼續(xù)至階段410,在那里計(jì)算設(shè)備900可以從對(duì)應(yīng)于調(diào)用無代碼UDF的電子表格 (例如,電子表格105)的計(jì)算線程接收至少一個(gè)輸入值。例如,為了執(zhí)行無代碼UDF(例如,圖2或圖5的無代碼UDF),電子表格應(yīng)用程序920可以i)將來自無代碼UDF的調(diào)用者的 輸入值放入無代碼UDF的輸入單元格中;ii)計(jì)算無代碼UDF區(qū)域中取決于(例如,直接或 間接)無代碼UDF的輸入單元格的所有公式;以及iii)從無代碼電UDF的輸出單元格取得 值并將該輸出單元格值返回給無代碼UDF的調(diào)用者。從其中計(jì)算設(shè)備900接收至少一個(gè)輸入值的階段410,方法400可繼續(xù)至階段 420,在那里計(jì)算設(shè)備900可將該至少一個(gè)輸入值保存在包含無代碼UDF的UDF存儲(chǔ)區(qū)域之 外的線程存儲(chǔ)區(qū)域中。例如,因?yàn)榭赡懿黄谕貙懸呀?jīng)在無代碼UDF的輸入單元格中的實(shí) 際值,所以本發(fā)明的各實(shí)施例可改為將這些輸入值存儲(chǔ)在其中電子表格應(yīng)用程序920可以 知道以便在需要輸入值時(shí)查找這些輸入值的單獨(dú)位置(例如,線程存儲(chǔ)區(qū)域),而不是將輸 入值直接放置在無代碼UDF的輸入單元格(例如,UDF存儲(chǔ)區(qū)域)中。此外,因?yàn)闊o代碼UDF 可以在多線程計(jì)算期間對(duì)于各單獨(dú)的線程上的不同的輸入一次執(zhí)行多次,所以對(duì)于這些輸 入可以存在多個(gè)存儲(chǔ)位置,例如每一計(jì)算線程一個(gè)。當(dāng)電子表格應(yīng)用程序920需要查找輸 入單元格的值時(shí),電子表格應(yīng)用程序920能夠確定從哪一個(gè)存儲(chǔ)位置取得該值?!┯?jì)算設(shè)備900在階段420中保存至少一個(gè)輸入值,方法400就可繼續(xù)至階段 430,在那里計(jì)算設(shè)備900可執(zhí)行無代碼UDF,包括使用無代碼UDF中的至少一個(gè)公式以及來 自線程存儲(chǔ)區(qū)域的至少一個(gè)輸入值來執(zhí)行至少一個(gè)計(jì)算。例如,為了計(jì)算無代碼UDF區(qū)域 中直接或間接取決于輸入單元格的所有公式,如上所述,電子表格應(yīng)用程序920可能需要 知道要計(jì)算哪些公式。圖5示出了跨由例如用戶指定的電子表格500的一部分的、用于計(jì) 算在正態(tài)曲線的一部分下的面積的無代碼UDF。如電子表格500所示,輸入單元格可以是 A2和B2,輸出單元格可以是B8,并且用戶已經(jīng)指定該UDF跨整個(gè)電子表格500。電子表格 500中的其他單元格可包括用于電子表格500的“計(jì)算模式”。然而,單元格B6可以不取決 于任何輸入單元格。因此,可能沒有理由在每一次調(diào)用圖5的UDF時(shí)計(jì)算B6。同樣,B5可 以不取決于任何輸入單元格,但可包括易失性“RAND(隨機(jī))”函數(shù)。因?yàn)樗且资缘?,?以電子表格應(yīng)用程序920可以在每一次對(duì)圖5的UDF求值時(shí)重新計(jì)算RAND函數(shù)。因此,可 以在對(duì)UDF求值時(shí)計(jì)算的公式的列表包括UDF區(qū)域中具有以下特性的所有公式i)直接或 間接取決于一個(gè)或多個(gè)輸入單元格;或者ii)是易失性的,或取決于另一易失性公式。如圖5所示,可以在對(duì)UDF求值時(shí)計(jì)算的公式的列表可包括單元格B4、B5、B7和 B8中的公式。該列表對(duì)于每一次對(duì)圖5的無代碼UDF求值可以是相同的。因此,該列表可 以存儲(chǔ)在與該無代碼UDF相關(guān)聯(lián)的數(shù)據(jù)結(jié)構(gòu)中,該數(shù)據(jù)結(jié)構(gòu)可以在用戶定義UDF時(shí)創(chuàng)建并 且可以不改變,除非用戶改變?cè)揢DF的定義。無需為不同的計(jì)算線程存在該結(jié)構(gòu)的分開的 各個(gè)副本。輸入單元格和輸出單元格的列表同樣可以存儲(chǔ)在該可被稱為按UDF數(shù)據(jù)結(jié)構(gòu)的 數(shù)據(jù)結(jié)構(gòu)中。圖6示出了用于如以上參考圖5描述的正態(tài)曲線UDF的按UDF數(shù)據(jù)結(jié)構(gòu)600。此外,圖5的無代碼UDF中的公式可以按特定次序求值。例如,B4和B5可以在B7 之前求值,而B7可以在B8之前求值。在特定情況下(不在該示例中),可以對(duì)公式求值的 次序可取決于輸入值。例如,如果兩個(gè)計(jì)算線程正在用不同的輸入值對(duì)相同的無代碼UDF 求值,則這兩個(gè)計(jì)算線程需要以不同的次序?qū)角笾凳强赡艿?。因此,可以?duì)公式求值的 次序是可以存儲(chǔ)在正在評(píng)估UDF調(diào)用的線程所擁有的數(shù)據(jù)結(jié)構(gòu)中的信息。這可被稱為按調(diào) 用數(shù)據(jù)結(jié)構(gòu)。圖7示出了用于以上參考圖5所描述的正態(tài)曲線UDF的按調(diào)用數(shù)據(jù)結(jié)構(gòu)700。當(dāng)公式求值要求取得來自一單元格的值時(shí),可使用一過程來知道該單元格是否是
7輸入單元格或包含參與該UDF的公式,并且如果是,則知道哪一個(gè)輸入單元格或哪一個(gè)公 式與該UDF相關(guān)。例如,在如以上參考圖5所描述的正態(tài)曲線示例中,B4可以涉及A2。在 對(duì)B4中的公式求值時(shí),電子表格應(yīng)用程序920可嘗試從A2取值。因?yàn)殡娮颖砀駪?yīng)用程序 920可能需要知道A2可以是該UDF的第一個(gè)輸入單元格,所以電子表格應(yīng)用程序920可取 得傳遞至對(duì)該UDF的特定調(diào)用中的第一個(gè)參數(shù),而不是從該單元格本身取值。因此,當(dāng)用戶 創(chuàng)建UDF時(shí),電子表格應(yīng)用程序920可創(chuàng)建按單元格數(shù)據(jù)結(jié)構(gòu)并將其鏈接到實(shí)際單元格。如 同按UDF數(shù)據(jù)結(jié)構(gòu),按單元格數(shù)據(jù)數(shù)據(jù)結(jié)構(gòu)可保持不變,除非用戶改變UDF的定義。因此, 無需為每一個(gè)線程存在這些數(shù)據(jù)結(jié)構(gòu)的單獨(dú)實(shí)例。圖8示出了用于圖5的正態(tài)曲線UDF示例的按單元格數(shù)據(jù)結(jié)構(gòu)800。如圖8所示, 當(dāng)計(jì)算線程試圖從單元格A2取值時(shí),可以看到A2對(duì)應(yīng)于正態(tài)曲線UDF的第一個(gè)輸入。該 線程然后可檢查它是否當(dāng)前正在對(duì)該正態(tài)曲線UDF求值,并且如果是,則可取得對(duì)該調(diào)用 的第一個(gè)輸入,該輸入本身被存儲(chǔ)在按調(diào)用數(shù)據(jù)結(jié)構(gòu)中。如果線程當(dāng)前未對(duì)正態(tài)曲線UDF 求值,則該線程可以照常從該單元格取值。一旦電子表格應(yīng)用程序920已經(jīng)計(jì)算了該UDF 的所有公式,就可從指定輸出單元格獲得結(jié)果。在以上正態(tài)曲線示例中,輸出單元格可以是 B8。在從B8取值后,電子表格應(yīng)用程序920可以看到B8對(duì)應(yīng)于該UDF中的第四個(gè)公式并 且因此可使用存儲(chǔ)在按調(diào)用數(shù)據(jù)結(jié)構(gòu)中用于該公式的結(jié)果。在計(jì)算設(shè)備900在階段430中執(zhí)行無代碼UDF后,方法400可繼續(xù)至階段440,在 那里計(jì)算設(shè)備900可將響應(yīng)于執(zhí)行無代碼UDF而產(chǎn)生的至少一個(gè)輸出值返回給對(duì)應(yīng)于調(diào)用 該無代碼UDF的電子表格的計(jì)算線程。例如,電子表格應(yīng)用程序920可從無代碼UDF的輸 出單元格取值并將其輸出單元格值返回給該無代碼UDF的調(diào)用者。結(jié)果,無代碼UDF求值 可以是線程安全的,因?yàn)榭赡茉谠揢DF的求值期間改變的所有數(shù)據(jù)都可以存儲(chǔ)在可由對(duì)該 UDF求值的線程所擁有的按調(diào)用數(shù)據(jù)結(jié)構(gòu)的實(shí)例中。沒有其他線程可查看該數(shù)據(jù)結(jié)構(gòu)實(shí)例。 如果多個(gè)線程正在同時(shí)對(duì)相同的無代碼UDF求值,則每一個(gè)線程可具有其自己的按調(diào)用數(shù) 據(jù)結(jié)構(gòu)的實(shí)例。因此,沒有一個(gè)線程可以干擾任何其他線程。此外,如果存在沒有對(duì)無代碼 UDF求值,但需要從參與無代碼UDF的單元格取值的另一線程,則該線程能夠直接從該單元 格取值。同樣,正在對(duì)無代碼UDF求值的線程可以不干擾沒有對(duì)該UDF求值的線程。一旦 計(jì)算設(shè)備900在階段440中返回至少一個(gè)輸出值,方法400然后就可在階段450處結(jié)束。根據(jù)本發(fā)明的各實(shí)施例,除了使用指定輸入單元格之外,無代碼UDF可具有取得 被傳遞至對(duì)UDF的特定調(diào)用的自變量的另一種方式,即“ARGUMENT(自變量)”函數(shù)。例如, 調(diào)用ARGUMENT(n)可取得UDF調(diào)用的第η個(gè)自變量。這可以是有用的,因?yàn)樗煞祷財(cái)?shù)組 或單元格引用。因此,如果只使用輸入單元格來傳遞自變量,則可能無法向UDF傳遞數(shù)組或 單元格引用。例如,用戶可能想要?jiǎng)?chuàng)建被稱為“AREASIZE(區(qū)域大小),,的、可取得區(qū)域引用并 返回該區(qū)域中的單元格的計(jì)數(shù)的無代碼UDF0在不使用ARGUMENT函數(shù)的情況下,創(chuàng)建這一 UDF不是不可能。在使用ARGUMENT函數(shù)的情況下,可以例如使用以下公式來創(chuàng)建AREASIZE UDF = ROWS (行)(ARGUMENT (1)) ^COLUMNS (列)(ARGUMENT (1))根據(jù)本發(fā)明的各實(shí)施例,可提供向量化。向量化可以指向數(shù)組中的每一個(gè)成員單 獨(dú)地應(yīng)用運(yùn)算。例如,考慮以下輸入數(shù)組的公式
8
{ = SUM (SIN (Al :A10))}電子表格應(yīng)用程序920可以對(duì)區(qū)域Al =AlO中的每一個(gè)條目執(zhí)行“SIN(正弦)”函 數(shù)并創(chuàng)建包含這些SIN函數(shù)的所有結(jié)果的數(shù)組。該數(shù)組然后可被傳遞至合計(jì)數(shù)組并返回單 個(gè)值的“SUM(求和)”函數(shù)。因此,如果電子表格應(yīng)用程序920知道所述運(yùn)算并非旨在作用 于值的數(shù)組,則該應(yīng)用程序可執(zhí)行向量化。例如,考慮以下輸入數(shù)組的公式{ = SUM (Al :A10)}電子表格應(yīng)用程序920可以不為范圍Al :A10中的每一個(gè)值調(diào)用一次SUM函數(shù),因 為電子表格應(yīng)用程序920可以知道該SUM函數(shù)可以將數(shù)組當(dāng)作自變量。因此,電子表格應(yīng) 用程序920可只調(diào)用一次SUM函數(shù)并將整個(gè)數(shù)組作為自變量來傳遞。為了使無代碼UDF能夠利用向量化,可以存在供創(chuàng)建該UDF的用戶指定自變量是 能夠取數(shù)組和區(qū)域引用還是只能夠取個(gè)別值的方式。例如,實(shí)現(xiàn)雙曲正弦函數(shù)(SINH)的無 代碼UDF可指定它只取個(gè)別值,并因此進(jìn)行電子表格應(yīng)用程序920的向量化行為。執(zhí)行某 種類型的合計(jì)的無代碼UDF可指定它取數(shù)組和區(qū)域引用,并因此可以不進(jìn)行電子表格應(yīng)用 程序920的向量化行為。根據(jù)本發(fā)明的各實(shí)施例,無代碼UDF可以在創(chuàng)建該UDF后允許用 戶為每一個(gè)自變量指定該自變量是能夠取數(shù)組和區(qū)域應(yīng)用還是只能夠取個(gè)別值。根據(jù)本發(fā)明的一實(shí)施例可包括用于提供無代碼用戶定義函數(shù)(UDF)的系統(tǒng)。該系 統(tǒng)可包括存儲(chǔ)器存儲(chǔ)和耦合到該存儲(chǔ)器存儲(chǔ)的處理單元。該處理單元可用于從對(duì)應(yīng)于調(diào)用 無代碼UDF的電子表格的計(jì)算線程接收至少一個(gè)輸入值。另外,該處理單元可用于將該至 少一個(gè)輸入值保存在包含無代碼UDF的UDF存儲(chǔ)區(qū)域之外的線程存儲(chǔ)區(qū)域中。此外,處理 單元可用于可執(zhí)行無代碼UDF,包括使用無代碼UDF中的至少一個(gè)公式以及來自線程存儲(chǔ) 區(qū)域的至少一個(gè)輸入值來執(zhí)行至少一個(gè)計(jì)算。而且,該處理單元可用于將響應(yīng)于執(zhí)行無代 碼UDF而產(chǎn)生的至少一個(gè)輸出值返回到對(duì)應(yīng)于調(diào)用該無代碼UDF的電子表格的計(jì)算線程。根據(jù)本發(fā)明的另一實(shí)施例可包括用于提供無代碼用戶定義函數(shù)(UDF)的系統(tǒng)。該 系統(tǒng)可包括存儲(chǔ)器存儲(chǔ)和耦合到該存儲(chǔ)器存儲(chǔ)的處理單元。該處理單元可用于分別從對(duì)應(yīng) 于調(diào)用無代碼UDF的電子表格的多個(gè)計(jì)算線程接收多個(gè)輸入值。同樣,該處理單元可用于 將該多個(gè)輸入值分別保存在多個(gè)線程存儲(chǔ)區(qū)域中。該多個(gè)線程存儲(chǔ)區(qū)域中的每一個(gè)都可以 在包含無代碼UDF的UDF存儲(chǔ)區(qū)域之外。對(duì)于該多個(gè)輸入值中的每一個(gè),處理單元可用于 i)從所保存的多個(gè)輸入值中取得輸入值;ii)執(zhí)行無代碼UDF,包括使用無代碼UDF中的多 個(gè)公式以及所取得的輸入值來執(zhí)行計(jì)算;以及iii)將響應(yīng)于執(zhí)行無代碼UDF而產(chǎn)生的至少 一個(gè)輸出值返回給對(duì)應(yīng)于所取得的輸入值的計(jì)算線程。根據(jù)本發(fā)明的又一實(shí)施例可包括用于提供無代碼用戶定義函數(shù)(UDF)的系統(tǒng)。該 系統(tǒng)可包括存儲(chǔ)器存儲(chǔ)和耦合到該存儲(chǔ)器存儲(chǔ)的處理單元。該處理單元可用于將至少一個(gè) 輸入值保存在包含無代碼UDF的UDF存儲(chǔ)區(qū)域之外的線程存儲(chǔ)區(qū)域中。該至少一個(gè)輸入值 可以與對(duì)應(yīng)于調(diào)用無代碼UDF的電子表格的計(jì)算線程相對(duì)應(yīng)。另外,該處理單元可用于可 執(zhí)行無代碼UDF,包括該處理單元可用于使用無代碼UDF中的至少一個(gè)公式以及來自線程 存儲(chǔ)區(qū)域的至少一個(gè)輸入值來執(zhí)行至少一個(gè)計(jì)算。該處理單元可用于使用至少一個(gè)公式來 執(zhí)行至少一個(gè)計(jì)算可包括該處理單元可用于響應(yīng)于該處理單元確定在按UDF數(shù)據(jù)結(jié)構(gòu)中 標(biāo)識(shí)出該至少一個(gè)公式而使用該至少一個(gè)公式來執(zhí)行至少一個(gè)計(jì)算。該按UDF數(shù)據(jù)結(jié)構(gòu)可 標(biāo)識(shí)無代碼UDF中的具有以下特性中的至少一個(gè)的公式直接取決于無代碼UDF中的至少間接取決于無代碼UDF中的至少一個(gè)輸入單元格、是易失性的、以及取決 于無代碼UDF中的其他易失性公式。該處理單元可用于執(zhí)行無代碼UDF可包括該處理單元 可用于以由按調(diào)用數(shù)據(jù)結(jié)構(gòu)定義的次序執(zhí)行無代碼UDF。此外,該處理單元可用于將響應(yīng)于 該處理單元執(zhí)行無代碼UDF而產(chǎn)生的至少一個(gè)輸出值返回到對(duì)應(yīng)于調(diào)用該無代碼UDF的電 子表格的計(jì)算線程。圖9是包括計(jì)算設(shè)備900的系統(tǒng)的框圖。根據(jù)本發(fā)明的一個(gè)實(shí)施方式,上述存儲(chǔ) 器存儲(chǔ)和處理單元可以在諸如圖9的計(jì)算設(shè)備900等計(jì)算設(shè)備中實(shí)現(xiàn)??梢允褂糜布?、軟 件或固件的任何合適的組合來實(shí)現(xiàn)該存儲(chǔ)器存儲(chǔ)和處理單元。例如,存儲(chǔ)器存儲(chǔ)和處理單 元可以用計(jì)算設(shè)備900或結(jié)合計(jì)算設(shè)備900的其他計(jì)算設(shè)備918中的任意一個(gè)來實(shí)現(xiàn)。根 據(jù)本發(fā)明的各實(shí)施方式,上述系統(tǒng)、設(shè)備和處理器是示例,而其他系統(tǒng)、設(shè)備和處理器可以 包括上述存儲(chǔ)器存儲(chǔ)和處理單元。此外,計(jì)算設(shè)備900可包括用于上述系統(tǒng)100的操作環(huán) 境。系統(tǒng)100可以在其他環(huán)境中操作并且不限于計(jì)算設(shè)備900。參考圖9,根據(jù)本發(fā)明的一實(shí)施方式的系統(tǒng)可包括計(jì)算設(shè)備,諸如計(jì)算設(shè)備900。 在一基本配置中,計(jì)算設(shè)備900可以包括至少一個(gè)處理單元902和系統(tǒng)存儲(chǔ)器904。處理 單元902 (例如,多個(gè)處理器110)可包括多個(gè)處理器(例如,第一處理器115、第二處理器 120、以及第三處理器125)。取決于計(jì)算設(shè)備的配置和類型,系統(tǒng)存儲(chǔ)器904可以包括,但 不限于,易失性存儲(chǔ)器(例如,隨機(jī)存取存儲(chǔ)器(RAM))、非易失性存儲(chǔ)器(例如,只讀存儲(chǔ) 器(ROM))、閃存或任何組合。系統(tǒng)存儲(chǔ)器904可以包括操作系統(tǒng)905、一個(gè)或多個(gè)編程模塊 906,且可以包括程序數(shù)據(jù)907和電子表格105。例如,操作系統(tǒng)905可適用于控制計(jì)算設(shè)備 900的操作。在一個(gè)實(shí)施例中,編程模塊906可包括電子表格應(yīng)用程序920。此外,本發(fā)明 的各實(shí)施方式可以結(jié)合圖形庫、其他操作系統(tǒng)、或任何其他應(yīng)用程序來實(shí)踐,且不限于任何 特定應(yīng)用程序或系統(tǒng)。該基本配置在圖9中由虛線908內(nèi)的組件示出。計(jì)算設(shè)備900還可具有附加特征或功能。例如,計(jì)算設(shè)備900還可包括附加數(shù)據(jù) 存儲(chǔ)設(shè)備(可移動(dòng)和/或不可移動(dòng)),諸如,例如磁盤、光盤或磁帶。這些附加存儲(chǔ)在圖9中 由可移動(dòng)存儲(chǔ)909和不可移動(dòng)存儲(chǔ)910示出。計(jì)算機(jī)存儲(chǔ)介質(zhì)可包括以用于存儲(chǔ)諸如計(jì)算 機(jī)可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)等信息的任何方法或技術(shù)實(shí)現(xiàn)的易失性和非 易失性、可移動(dòng)和不可移動(dòng)介質(zhì)。系統(tǒng)存儲(chǔ)器904、可移動(dòng)存儲(chǔ)909和不可移動(dòng)存儲(chǔ)910都 是計(jì)算機(jī)存儲(chǔ)介質(zhì)的示例(即,存儲(chǔ)器存儲(chǔ))。計(jì)算機(jī)存儲(chǔ)介質(zhì)可以包括,但不限于,RAM、 ROM、電可擦除只讀存儲(chǔ)器(EEPROM)、閃存或其它存儲(chǔ)器技術(shù)、CD-ROM、數(shù)字多功能盤(DVD) 或其它光存儲(chǔ)、磁帶盒、磁帶、磁盤存儲(chǔ)或其它磁性存儲(chǔ)設(shè)備、或可用于存儲(chǔ)信息且可以由 計(jì)算設(shè)備900訪問的任何其它介質(zhì)。任何這樣的計(jì)算機(jī)存儲(chǔ)介質(zhì)都可以是設(shè)備900的一部 分。計(jì)算設(shè)備900還可以具有輸入設(shè)備912,如鍵盤、鼠標(biāo)、筆、聲音輸入設(shè)備、觸摸輸入設(shè)備 等。還可包括諸如顯示器、揚(yáng)聲器、打印機(jī)等輸出設(shè)備914。上述設(shè)備是示例且可以使用其 他設(shè)備。計(jì)算設(shè)備900還可包含可允許設(shè)備900諸如通過例如內(nèi)聯(lián)網(wǎng)或因特網(wǎng)等分布式計(jì) 算環(huán)境中的網(wǎng)絡(luò)來與其他計(jì)算設(shè)備918進(jìn)行通信的通信連接916。通信連接916是通信介 質(zhì)的一個(gè)示例。通信介質(zhì)通常由諸如載波或其他傳輸機(jī)制等已調(diào)制數(shù)據(jù)信號(hào)中的計(jì)算機(jī)可 讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊或其他數(shù)據(jù)來體現(xiàn),并包括任何信息傳遞介質(zhì)。術(shù)語“已調(diào)制數(shù) 據(jù)信號(hào)”可以描述以對(duì)該信號(hào)中的信息進(jìn)行編碼的方式設(shè)定或者改變其一個(gè)或多個(gè)特征的
10信號(hào)。作為示例而非限制,通信介質(zhì)包括諸如有線網(wǎng)絡(luò)或直接線連接等有線介質(zhì),以及諸如 聲學(xué)、射頻(RF)、紅外線和其他無線介質(zhì)等無線介質(zhì)。如此處所使用的術(shù)語“計(jì)算機(jī)可讀介 質(zhì)“可以包括存儲(chǔ)介質(zhì)和通信介質(zhì)兩者。如上所述,可以在系統(tǒng)存儲(chǔ)器904中存儲(chǔ)包括操作系統(tǒng)905在內(nèi)的多個(gè)程序模塊 和數(shù)據(jù)文件。當(dāng)在處理單元902上執(zhí)行時(shí),編程模塊906 (例如,電子表格應(yīng)用程序920)可 執(zhí)行各過程,包括例如,如上所述的一個(gè)或多個(gè)方法400的各階段。前述進(jìn)程是示例,且處 理單元902可執(zhí)行其他進(jìn)程。根據(jù)本發(fā)明的各實(shí)施方式可以使用的其他編程模塊可以包括 電子郵件和聯(lián)系人應(yīng)用程序、文字處理應(yīng)用程序、電子表格應(yīng)用程序、數(shù)據(jù)庫應(yīng)用程序、幻 燈片演示應(yīng)用程序、繪圖或計(jì)算機(jī)輔助應(yīng)用程序等。一般而言,根據(jù)本發(fā)明的各實(shí)施方式,程序模塊可以包括可以執(zhí)行特定任務(wù)或可 以實(shí)現(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、組件、數(shù)據(jù)結(jié)構(gòu)和其他類型的結(jié)構(gòu)。此外,本發(fā)明的 各實(shí)施方式可用其他計(jì)算機(jī)系統(tǒng)配置來實(shí)踐,包括手持式設(shè)備、多處理器系統(tǒng)、基于微處理 器的系統(tǒng)或可編程消費(fèi)電子產(chǎn)品、小型機(jī)、大型計(jì)算機(jī)等。本發(fā)明的各實(shí)施方式也可以在其 中任務(wù)由通過通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程處理設(shè)備執(zhí)行的分布式計(jì)算環(huán)境中實(shí)現(xiàn)。在分布式計(jì)算 環(huán)境中,程序模塊可以位于本地和遠(yuǎn)程存儲(chǔ)器存儲(chǔ)設(shè)備中。此外,本發(fā)明的各實(shí)施方式可在包括分立電子元件的電路、包含邏輯門的封裝或 集成電子芯片、利用微處理器的電路、或在包含電子元件或微處理器的單個(gè)芯片上實(shí)現(xiàn)。本 發(fā)明的各實(shí)施方式還可以使用能夠執(zhí)行諸如,例如,AND(與)、0R(或)和NOT(非)等邏輯 運(yùn)算的其他技術(shù)來實(shí)踐,包括但不限于,機(jī)械、光學(xué)、流體和量子技術(shù)。另外,本發(fā)明的各實(shí) 施方式可以在通用計(jì)算機(jī)或任何其他電路或系統(tǒng)中實(shí)現(xiàn)。例如,本發(fā)明的各實(shí)施方式可被實(shí)現(xiàn)為計(jì)算機(jī)進(jìn)程(方法)、計(jì)算系統(tǒng)或諸如計(jì)算 機(jī)程序產(chǎn)品或計(jì)算機(jī)可讀介質(zhì)等制品。計(jì)算機(jī)程序產(chǎn)品可以是計(jì)算機(jī)系統(tǒng)可讀并編碼了用 于執(zhí)行計(jì)算機(jī)過程的指令的計(jì)算機(jī)程序的計(jì)算機(jī)存儲(chǔ)介質(zhì)。計(jì)算機(jī)程序產(chǎn)品還可以是計(jì)算 系統(tǒng)可讀并編碼了用于執(zhí)行計(jì)算機(jī)過程的指令的計(jì)算機(jī)程序的載體上的傳播信號(hào)。因此, 本發(fā)明能以硬件和/或軟件(包括固件、常駐軟件、微碼等)來具體化。換言之,本發(fā)明的 各實(shí)施方式可以采用其上包含有供指令執(zhí)行系統(tǒng)使用或結(jié)合其使用的計(jì)算機(jī)可使用或計(jì) 算機(jī)可讀程序代碼的計(jì)算機(jī)可使用或計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)上的計(jì)算機(jī)程序產(chǎn)品的形式。計(jì) 算機(jī)可使用或計(jì)算機(jī)可讀介質(zhì)可以是可包含、存儲(chǔ)、通信、傳播、或傳輸程序以供指令執(zhí)行 系統(tǒng)、裝置或設(shè)備使用或結(jié)合其使用的任何介質(zhì)。計(jì)算機(jī)可使用或計(jì)算機(jī)可讀介質(zhì)可以是,例如,但不限于,電、磁、光、電磁、紅外、 或半導(dǎo)體系統(tǒng)、裝置、設(shè)備或傳播介質(zhì)。更具體的計(jì)算機(jī)可讀介質(zhì)示例(非窮盡列表),計(jì)算 機(jī)可讀介質(zhì)可以包括以下具有一條或多條導(dǎo)線的電連接、便攜式計(jì)算機(jī)盤、隨機(jī)存取存儲(chǔ) 器(RAM)、只讀存儲(chǔ)器(ROM)、可擦除可編程只讀存儲(chǔ)器(EPR0M或閃存)、光纖、和便攜式壓 縮盤只讀存儲(chǔ)器(CD-ROM)。注意,計(jì)算機(jī)可使用或計(jì)算機(jī)可讀介質(zhì)甚至可以是其上打印有 程序的紙張或另一合適的介質(zhì),因?yàn)槌绦蚩梢越?jīng)由例如對(duì)紙張或其他介質(zhì)的光學(xué)掃描而電 子地捕獲,隨后如有必要被編譯、解釋,或以其他合適的方式處理,并隨后存儲(chǔ)在計(jì)算機(jī)存 儲(chǔ)器中。以上參考例如根據(jù)本發(fā)明的各實(shí)施方式的方法、系統(tǒng)和計(jì)算機(jī)程序產(chǎn)品的框圖和 /或操作圖示描述了本發(fā)明的各實(shí)施方式??蛑兴⒚鞯母鞴δ?動(dòng)作可以按不同于任何
11流程圖所示的次序出現(xiàn)。例如,取決于所涉及的功能/動(dòng)作,連續(xù)示出的兩個(gè)框?qū)嶋H上可以 基本上同時(shí)執(zhí)行,或者這些框有時(shí)可以按相反的次序來執(zhí)行。盡管已經(jīng)描述了本發(fā)明的某些實(shí)施方式,但也可能存在其他實(shí)施方式。此外,雖 然本發(fā)明的各實(shí)施方式被描述為與存儲(chǔ)在存儲(chǔ)器和其他存儲(chǔ)介質(zhì)中的數(shù)據(jù)相關(guān)聯(lián),但數(shù)據(jù) 還可以被存儲(chǔ)在或讀取自其他類型的計(jì)算機(jī)可讀介質(zhì),如輔助存儲(chǔ)設(shè)備,像硬盤、軟盤、或 CD-ROM ;來自因特網(wǎng)的載波;或其他形式的RAM或ROM。此外,所公開的各方法的各階段可以 按任何方式來修改,包括通過對(duì)各階段重新排序和/或插入或刪除階段,而不背離本發(fā)明。包括此處所包括的代碼中的版權(quán)在內(nèi)的所有權(quán)利都?xì)w屬于申請(qǐng)人并且是本申請(qǐng) 人的財(cái)產(chǎn)。申請(qǐng)人保持并保留此處所包括的代碼中的所有權(quán)利,并授予僅關(guān)于所授權(quán)的專 利的再現(xiàn)且未出于其他目的再現(xiàn)該材料的許可。雖然本說明書包括各示例,但本發(fā)明的范圍由所附權(quán)利要求書來指示。此外,盡管 用對(duì)結(jié)構(gòu)特征和/或方法動(dòng)作專用的語言描述了本說明書,但權(quán)利要求書并不限于上述特 征或動(dòng)作。相反,上述具體特征和動(dòng)作是作為本發(fā)明的各實(shí)施方式的示例來公開的。
權(quán)利要求
一種用于提供無代碼用戶定義函數(shù)(UDF)的方法(400),所述方法(400)包括從對(duì)應(yīng)于調(diào)用所述無代碼UDF的電子表格(105、200、300、500)的計(jì)算線程接收至少一個(gè)輸入值(410);將所述至少一個(gè)輸入值保存在包含所述無代碼UDF的UDF存儲(chǔ)區(qū)域之外的線程存儲(chǔ)區(qū)域中(420)執(zhí)行所述無代碼UDF(430),包括使用所述無代碼UDF中的至少一個(gè)公式以及來自所述線程存儲(chǔ)區(qū)域的至少一個(gè)輸入值來執(zhí)行至少一個(gè)計(jì)算;以及將響應(yīng)于執(zhí)行所述無代碼UDF而產(chǎn)生的至少一個(gè)輸出值返回給對(duì)應(yīng)于調(diào)用所述無代碼UDF的電子表格(105、200、300、500)的計(jì)算線程(440)。
2.如權(quán)利要求1所述的方法(400),其特征在于,還包括確定在按UDF數(shù)據(jù)結(jié)構(gòu)(600) 中標(biāo)識(shí)所述至少一個(gè)公式。
3.如權(quán)利要求2所述的方法(400),其特征在于,使用所述至少一個(gè)公式來執(zhí)行所述至 少一個(gè)計(jì)算(430)包括響應(yīng)于確定在所述按UDF數(shù)據(jù)結(jié)構(gòu)(600)中標(biāo)識(shí)所述至少一個(gè)公式 而使用所述至少一個(gè)公式來執(zhí)行所述至少一個(gè)計(jì)算。
4.如權(quán)利要求1所述的方法(400),其特征在于,使用所述至少一個(gè)公式來執(zhí)行所述至 少一個(gè)計(jì)算(430)包括響應(yīng)于確定在按UDF數(shù)據(jù)結(jié)構(gòu)(600)中標(biāo)識(shí)所述至少一個(gè)公式而使 用所述至少一個(gè)公式來執(zhí)行所述至少一個(gè)計(jì)算,其中所述按UDF數(shù)據(jù)結(jié)構(gòu)(600)標(biāo)識(shí)所述 無代碼UDF中的具有以下特性中的至少一個(gè)的公式直接取決于無代碼UDF中的至少一個(gè) 輸入單元格、間接取決于無代碼UDF中的至少一個(gè)輸入單元格、是易失性的、以及取決于無 代碼UDF中的其他易失性公式。
5.如權(quán)利要求1所述的方法(400),其特征在于,執(zhí)行所述無代碼UDF(430)包括以由 按調(diào)用數(shù)據(jù)結(jié)構(gòu)(600)定義的次序執(zhí)行所述無代碼UDF。
6.如權(quán)利要求1所述的方法(400),其特征在于,執(zhí)行所述無代碼UDF(430)包括以由 按調(diào)用數(shù)據(jù)結(jié)構(gòu)(600)定義的次序執(zhí)行所述無代碼UDF,所述按調(diào)用數(shù)據(jù)結(jié)構(gòu)(600)對(duì)于所 述計(jì)算線程是唯一的。
7.如權(quán)利要求1所述的方法(400),其特征在于,執(zhí)行所述無代碼UDF(430)包括從所述無代碼UDF中的單元格取值;以及使用按單元格數(shù)據(jù)結(jié)構(gòu)來確定以下各項(xiàng)中的一個(gè)所述單元格是否是所述無代碼UDF 的輸入單元格以及所述單元格是否包含參與所述無代碼UDF的公式。
8.如權(quán)利要求1所述的方法(400),其特征在于,使用所述至少一個(gè)公式來執(zhí)行所述至 少一個(gè)計(jì)算(430)包括使用所述至少一個(gè)公式來執(zhí)行所述至少一個(gè)計(jì)算,其中所述公式取 決于以下各項(xiàng)中的一個(gè)直接取決于所述無代碼UDF的至少一個(gè)輸入單元格以及間接取決 于所述無代碼UDF的至少一個(gè)輸入單元格。
9.如權(quán)利要求1所述的方法(400),其特征在于,執(zhí)行所述無代碼UDF(430)包括執(zhí)行 包括ARGUMENT函數(shù)的無代碼UDF。
10.如權(quán)利要求1所述的方法(400),其特征在于,執(zhí)行所述無代碼UDF(430)包括執(zhí)行 包括向量化的無代碼UDF,所述向量化包括向所述無代碼UDF中的數(shù)組的每一個(gè)成員單獨(dú) 地應(yīng)用運(yùn)算。
11.一種存儲(chǔ)一組指令的計(jì)算機(jī)可讀介質(zhì),所述一組指令在被執(zhí)行時(shí)執(zhí)行一種用于提供無代碼用戶定義函數(shù)(UDF)的方法(400),由所述一組指令執(zhí)行的方法(400)包括分別從對(duì)應(yīng)于調(diào)用所述無代碼UDF的電子表格(105、200、300、500)的多個(gè)計(jì)算線程接 收多個(gè)輸入值(410)將所述多個(gè)輸入值分別保存在多個(gè)線程存儲(chǔ)區(qū)域中(420),所述多個(gè)線程存儲(chǔ)區(qū)域中 的每一個(gè)都在包含所述無代碼UDF的UDF存儲(chǔ)區(qū)域之外;以及對(duì)于所述多個(gè)輸入值中的每一個(gè),從所保存的多個(gè)輸入值中取得輸入值,執(zhí)行所述無代碼UDF (430),包括使用所述無代 碼UDF中的多個(gè)公式以及所取得的輸入值來執(zhí)行計(jì)算,并且將響應(yīng)于執(zhí)行所述無代碼UDF而產(chǎn)生的至少一個(gè)輸出值返回給對(duì)應(yīng)于所取得的輸入 值的多個(gè)計(jì)算線程中的一個(gè)(440)。
12.如權(quán)利要求11所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,還包括對(duì)于所述多個(gè)輸入值 中的每一個(gè),確定在按UDF數(shù)據(jù)結(jié)構(gòu)(600)中標(biāo)識(shí)所述多個(gè)公式。
13.如權(quán)利要求12所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,使用所述多個(gè)公式來執(zhí)行所 述計(jì)算(430)包括響應(yīng)于確定在所述按UDF數(shù)據(jù)結(jié)構(gòu)(600)中標(biāo)識(shí)所述多個(gè)公式而使用所 述多個(gè)公式來執(zhí)行所述計(jì)算。
14.如權(quán)利要求11所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,使用所述多個(gè)公式來執(zhí)行所 述計(jì)算(430)包括響應(yīng)于確定在所述按UDF數(shù)據(jù)結(jié)構(gòu)(600)中標(biāo)識(shí)所述多個(gè)公式而使用所 述多個(gè)公式來執(zhí)行所述計(jì)算,其中所述按UDF數(shù)據(jù)結(jié)構(gòu)(600)標(biāo)識(shí)所述無代碼UDF中的具 有以下特性中的至少一個(gè)的公式直接取決于無代碼UDF中的至少一個(gè)輸入單元格、間接 取決于無代碼UDF中的至少一個(gè)輸入單元格、是易失性的、以及取決于無代碼UDF中的其他 易失性公式。
15.如權(quán)利要求11所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,執(zhí)行所述計(jì)算包括以由按調(diào) 用數(shù)據(jù)結(jié)構(gòu)(600)定義的次序執(zhí)行所述計(jì)算。
16.如權(quán)利要求11所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,執(zhí)行所述計(jì)算(430)包括以由 按調(diào)用數(shù)據(jù)結(jié)構(gòu)(600)定義的次序執(zhí)行所述計(jì)算,所述按調(diào)用數(shù)據(jù)結(jié)構(gòu)(600)對(duì)于對(duì)應(yīng)于 所取得的輸入值的計(jì)算線程是唯一的。
17.如權(quán)利要求11所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,使用所述無代碼UDF中的多個(gè) 公式來執(zhí)行所述計(jì)算(430)包括使用所述無代碼UDF中的多個(gè)公式來執(zhí)行所述計(jì)算,其中 所述多個(gè)公式中的公式取決于以下各項(xiàng)中的一個(gè)直接取決于所述無代碼UDF的至少一個(gè) 輸入單元格以及間接取決于所述無代碼UDF的至少一個(gè)輸入單元格。
18.如權(quán)利要求11所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,執(zhí)行所述無代碼UDF(430)包 括執(zhí)行包括ARGUMENT函數(shù)的無代碼UDF0
19.如權(quán)利要求11所述的計(jì)算機(jī)可讀介質(zhì),其特征在于,執(zhí)行所述無代碼UDF(430)包 括執(zhí)行包括向量化的無代碼UDF,所述向量化包括向所述無代碼UDF中的數(shù)組的每一個(gè)成 員單獨(dú)地應(yīng)用運(yùn)算。
20.一種用于提供無代碼用戶定義函數(shù)(UDF)的系統(tǒng),所述系統(tǒng)包括存儲(chǔ)器存儲(chǔ);以及耦合到所述存儲(chǔ)器存儲(chǔ)的處理單元,其中所述處理單元可用于將至少一個(gè)輸入值保存在包含所述無代碼UDF的UDF存儲(chǔ)區(qū)域之外的線程存儲(chǔ)區(qū)域中(420),所述至少一個(gè)輸入值與對(duì)應(yīng)于調(diào)用所述無代碼UDF的電子表格(105、200、300、500) 的計(jì)算線程相對(duì)應(yīng);執(zhí)行所述無代碼UDF(430),包括所述處理單元可用于使用所述無代碼UDF中的至少一 個(gè)公式以及來自所述線程存儲(chǔ)區(qū)域的至少一個(gè)輸入值來執(zhí)行至少一個(gè)計(jì)算,其中所述處理 單元可用于使用所述至少一個(gè)公式來執(zhí)行所述至少一個(gè)計(jì)算包括所述處理單元可用于響 應(yīng)于所述處理單元確定在按UDF數(shù)據(jù)結(jié)構(gòu)(600)中標(biāo)識(shí)所述至少一個(gè)公式而使用所述至少 一個(gè)公式來執(zhí)行所述至少一個(gè)計(jì)算,其中所述按UDF數(shù)據(jù)結(jié)構(gòu)(600)標(biāo)識(shí)所述無代碼UDF 中的具有以下特性中的至少一個(gè)的公式直接取決于所述無代碼UDF中的至少一個(gè)輸入單 元格、間接取決于所述無代碼UDF中的至少一個(gè)輸入單元格、是易失性的、以及取決于所述 無代碼UDF中的其他易失性公式,并且其中所述處理單元可用于執(zhí)行所述無代碼UDF包括 所述處理單元可用于以由按調(diào)用數(shù)據(jù)結(jié)構(gòu)(600)定義的次序執(zhí)行所述無代碼UDF;以及將響應(yīng)于所述處理單元執(zhí)行所述無代碼UDF而產(chǎn)生的至少一個(gè)輸出值返回給對(duì)應(yīng)于 調(diào)用所述無代碼UDF的電子表格(105、200、300、500)的計(jì)算線程(440)。
全文摘要
可提供一種多線程無代碼用戶定義函數(shù)(UDF)。首先,可以從對(duì)應(yīng)于調(diào)用無代碼UDF的電子表格的計(jì)算線程接收至少一個(gè)輸入值。然后,可將該至少一個(gè)輸入值保存在包含無代碼UDF的UDF存儲(chǔ)區(qū)域之外的線程存儲(chǔ)區(qū)域中。接著,可執(zhí)行無代碼UDF,包括使用無代碼UDF中的至少一個(gè)公式以及來自線程存儲(chǔ)區(qū)域的至少一個(gè)輸入值來執(zhí)行至少一個(gè)計(jì)算。然后可將響應(yīng)于執(zhí)行無代碼UDF而產(chǎn)生的至少一個(gè)輸出值返回到對(duì)應(yīng)于調(diào)用該無代碼UDF的電子表格的計(jì)算線程。
文檔編號(hào)G06F17/21GK101918944SQ200880123212
公開日2010年12月15日 申請(qǐng)日期2008年11月26日 優(yōu)先權(quán)日2007年12月26日
發(fā)明者A·J·貝克, C·D·埃利斯, J·J·杜扎克, J·M·切爾羅弗 申請(qǐng)人:微軟公司