本发明涉及数据处理技术领域,具体而言,涉及一种最优线程数量求取方法及装置。
背景技术:
现有的技术在数据处理时包括多个转换进程,每个转换进程包括多个步骤,步骤一般是通过一定逻辑按顺序执行,每个步骤默认会单独启用一个线程,每个步骤是同时运行的,如第一个步骤处理了一部分数据会直接传入到下一个步骤进行处理。在处理转换时可以对每个步骤进行单线程处理或人为手动添加线程数,但步骤复杂程度不同会导致资源使用不合理,复杂的步骤会对整个过程造成堵塞。
技术实现要素:
有鉴于此,本发明实施例的目的在于提供一种最优线程数量求取方法及装置,以实现通过优化步骤线程数量达到减少转换进程耗时的目的。
本发明采用的技术方案如下:
本发明实施例提供了一种最优线程数量求取方法,所述方法应用于优化线程数量,所述方法包括:获取每一个步骤的线程切换损耗ci;根据每一个步骤的线程损耗ci、单个线程耗时ti与步骤总耗时t的关系:
进一步地,所述方法还包括:随机改变每个步骤的线程数量,运行并获取步骤的运行耗时;重复随机改变步骤的线程数量,获取多组每个步骤不同线程数量的运行耗时数据。
进一步地,所述获取每一个步骤的线程切换损耗ci的步骤包括:通过对多组每个步骤不同线程数量的运行耗时数据进行线性回归计算获取每一个步骤的线程切换消耗ci。
进一步地,所述方法还包括:获取每个步骤单线程运行的步骤耗时ti。
进一步地,所述方法还包括:分别对ni向上或向下取整并代入式子
本发明提供了一种最优线程数量求取装置,所述装置包括:获取模块,用于获取每一个步骤的线程切换损耗ci;求取模块,用于根据每一个步骤的线程损耗ci、单个线程耗时ti与步骤总耗时t的关系:
进一步地,所述获取模块包括:配置单元,用于随机改变每个步骤的线程数量,并运行所述步骤;计时单元,用于获取所述步骤的运行耗时;所述配置单元还用于重复随机改变步骤的线程数量,所述计时单元用于获取多组每个步骤不同线程数量的运行耗时数据。
进一步地,所述获取模块还包括第一计算单元,所述第一计算单元用于通过对多组每个步骤不同线程数量的运行耗时数据进行线性回归计算获取每一个步骤的线程切换消耗ci。
进一步地,所述计时单元还用于获取每个步骤单线程运行的步骤耗时ti。
进一步地,所述求取模块包括第二计算单元,所述第二计算单元用于分别对ni向上或向下取整并代入式子
相对现有技术,本发明具有以下有益效果:
本发明实施例提供了一种最优线程数量求取方法及装置,所述方法应用于优化线程数量,所述方法包括:获取每一个步骤的线程切换损耗ci;根据每一个步骤的线程损耗ci、单个线程耗时ti与步骤总耗时t的关系:
为使本发明的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
附图说明
为了更清楚地说明本发明实施方式的技术方案,下面将对实施方式中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1示出了本发明所提供的一种电子设备的示意图。
图2示出了最优线程数量求取方法的流程图。
图3示出了步骤s20的子步骤流程图。
图4示出了本发明实施例提供的最优线程数量求取装置的功能模块示意图。
图5示出了获取模块的功能单元示意图。
图6示出了求取模块的功能单元示意图。
图标:100-电子设备;101-存储器;102-存储控制器;103-处理器;104-外设接口;105-显示单元;106-输入输出单元;200-最优线程数量求取装置;210-获取模块;211-计时单元;212-配置单元;213-第一计算单元;220-求取模块;221-第二计算单元;222-第三计算单元。
具体实施方式
下面将结合本发明实施例中附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明的描述中,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。
下面结合附图,对本发明的一些实施方式作详细说明。在不冲突的情况下,下述的实施例及实施例中的特征可以相互组合。
图1示出本发明较佳实施例提供的电子设备100的方框示意图。所述电子设备100可以是台式计算机、笔记本电脑、平板电脑、智能手机、个人数字助理(personaldigitalassistant,pda)等。所述电子设备100包括最优线程数量求取装置200、存储器101、存储控制器102、处理器103、外设接口104、显示单元105、输入输出单元106。
所述存储器101、存储控制器102、处理器103、外设接口104、显示单元105、输入输出单元106各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线或信号线实现电性连接。所述最优线程数量求取装置200及乘性水印提取装置300均包括至少一个可以软件或固件(firmware)的形式存储于所述存储器101中或固化在所述电子设备100的操作系统(operatingsystem,os)中的软件功能模块。所述处理器103用于执行存储器101中存储的可执行模块,例如所述最优线程数量求取装置200包括的软件功能模块或计算机程序。
其中,存储器101可以是,但不限于,随机存取存储器(randomaccessmemory,ram),只读存储器(readonlymemory,rom),可编程只读存储器(programmableread-onlymemory,prom),可擦除只读存储器(erasableprogrammableread-onlymemory,eprom),电可擦除只读存储器(electricerasableprogrammableread-onlymemory,eeprom)等。其中,存储器101用于存储程序,所述处理器103在接收到执行指令后,执行所述程序,本发明任一实施例揭示的由过程定义的服务器所执行的方法可以应用于处理器103中,或者由处理器103实现。
处理器103可能是一种集成电路芯片,具有信号的处理能力。上述的处理器103可以是通用处理器,包括中央处理器(centralprocessingunit,简称cpu)、网络处理器(networkprocessor,简称np)等;还可以是数字信号处理器(dsp)、专用集成电路(asic)、现场可编程门阵列(fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器103也可以是任何常规的处理器103等。
所述外设接口104将各种输入/输出装置耦合至处理器103以及存储器101。在一些实施例中,外设接口104,处理器103以及存储控制器102可以在单个芯片中实现。在其他一些实例中,他们可以分别由独立的芯片实现。
显示单元105在所述电子设备100与用户之间提供一个交互界面(例如用户操作界面)或用于显示图像数据给用户参考。在本实施例中,所述显示单元105可以是液晶显示器或触控显示器。若为触控显示器,其可为支持单点和多点触控操作的电容式触控屏或电阻式触控屏等。支持单点和多点触控操作是指触控显示器能感应到来自该触控显示器上一个或多个位置处同时产生的触控操作,并将该感应到的触控操作交由处理器103进行计算和处理。
输入输出单元106用于提供给用户输入数据实现用户与所述电子设备100的交互。例如,预先设定每一个步骤的线程数量,或设定步骤的数量以获取多组数据等。所述输入输出单元106可以是,但不限于,鼠标和键盘等,所述键盘可以是虚拟键盘。
第一实施例
本实施例提供了一种最优线程数量求取方法,通过每一个步骤的线程损耗ci、单个线程耗时ti与步骤总耗时t的关系,求取每个步骤的最优线程数量以使每个步骤总耗时t最小,从而可以降低转换耗时。
请参阅图2,图2示出了本实施例提供的最优线程数量求取方法的流程图。最优线程数量求取方法包括步骤s10~s30。
步骤s10:获取每个步骤单线程运行的步骤耗时ti。
将每一个步骤单线程运行,运行整个转换的每个步骤,将每一个步骤均设置为单线程模式运行。记录每一个步骤的运行起始时间和每一个步骤的运行结束时间,根据每一个步骤的运行起始时间及运行结束时间获取每个步骤运行的步骤耗时ti。
步骤s20:获取每一个步骤的线程损耗ci。
将步骤设置为多线程运行时,每运行完一个线程,需要切换另一个线程,切换线程运行耗时为线程损耗。当一个步骤包括多个线程时,线程损耗包括多个线程切换的损耗。
根据转换的步骤数量m、每个步骤单线程耗时ti、每个步骤的切换线程损耗ci、每个步骤优化后的线程数量ni及优化后的理论总耗时t有以下关系:
转换后可得:
即:
即,线程切换损耗时间=理论总耗时-理论优化后耗时。上述式子可以看作为对多元线性回归函数,可通过最小二乘法公式求解。公式如下:
其中,
则ci相当于公式中的bp,
于本实施例中,通过最小二乘法公式求解ci,请参阅图3,步骤s20包括以下子步骤步骤s201~步骤s203。
步骤s201:随机改变每个步骤的线程数量,运行并获取步骤的运行耗时。
步骤s202:重复随机改变步骤的线程数量,获取多组每个步骤不同线程数量的运行耗时数据。数据组数需要大于步骤的个数。
步骤s203:通过对多组每个步骤不同线程数量的运行耗时数据进行线性回归计算获取每一个步骤的线程切换消耗ci。
将多组数据中的每一个步骤的线程数量转换为二维数组,a[i][j],其中i维度的个数为数据的组数,j维度的个数为步骤的数量,且每行数据顺序对应每个步骤的顺序。实际运行时间减去每个步骤单线程运行时间与线程数的商转换为二维数组b[i][j],其中i维度的个数为样例个数,j维度的个数等于1。
用程序的二维数组代替矩阵的运算,如:1)、
首先遍历将数组a的行数for(inti=0;i<a.length;i++),再遍历列数for(intj=0;j<a[i].length;j++),最后将数组a[i][j]的值赋值给新数组c[i][j],即c[j][i]=a[i][j]。
两矩阵相乘
将数组通过最小二乘法公式运算,最终可计算出每个步骤的线程切换损耗c1、c2、c3…cm。
步骤s30:根据每一个步骤的线程损耗ci、单个线程耗时ti与步骤总耗时t的关系:
对于包括多个步骤的转换而言,转换的总耗时为每一个步骤的的耗时之和。因此只需每一个步骤的耗时最小,即可达到整个转换耗时最小的目的。
对于单个步骤而言,其总耗时为t,单个线程耗时为t,步骤的线程损耗c,线程数量为n。则其总耗时t与单个线程耗时为t、步骤的线程损耗c、线程数量n具有以下关系:
对上式求导可得,
步骤s40:分别对ni向上或向下取整并代入式子
第二实施例
本实施例提供一种最优线程数量求取装置200,所述最优线程数量求取装置200应用于所述电子设备,用于实现第一实施例所描述的最优线程数量求取方法。
需要说明的是,本实施例提供的最优线程数量求取装置200,其基本原理与第一实施例提供的最优线程数量求取方法大致相同,为简要描述,本实施例对此不再做详细说明,本实施例未介绍详尽之处,请参阅第一实施例中的相关内容。
请参阅图4,图4示出了本实施例提供的最优线程数量求取装置200的功能模块示意图。
最优线程数量求取装置200包括获取模块210及求取模块220。
其中,所述获取模块210用于用于获取每一个步骤的线程切换损耗ci及每个步骤的单线程运行耗时ti。
优选地,请参阅图5,所述获取模块210包括计时单元211、配置单元212及第一计算单元213。
所述计时单元211还用于获取每个步骤单线程运行的步骤耗时ti。将每一个步骤单线程运行,运行整个转换的每个步骤,将每一个步骤均设置为单线程模式运行。记录每一个步骤的运行起始时间和每一个步骤的运行结束时间,根据每一个步骤的运行起始时间及运行结束时间获取每个步骤运行的步骤耗时ti。
计时单元211,用于获取所述步骤的运行耗时;所述配置单元212还用于重复随机改变步骤的线程数量,所述计时单元211用于获取多组每个步骤不同线程数量的运行耗时数据。将步骤设置为多线程运行时,每运行完一个线程,需要切换另一个线程,切换线程运行耗时为线程损耗。当一个步骤包括多个线程时,线程损耗包括多个线程切换的损耗。
所述第一计算单元213用于通过对多组每个步骤不同线程数量的运行耗时数据进行线性回归计算获取每一个步骤的线程切换消耗ci。
所述求取模块220,用于根据每一个步骤的线程损耗ci、单个线程耗时ti与步骤总耗时t的关系:
请参阅图6,求取模块220包括第二计算单元221和第三计算单元222,所述第三计算单元222用于根据每一个步骤的线程损耗ci、单个线程耗时ti与步骤总耗时t的关系:
所述第二计算单元221用于分别对ni向上或向下取整并代入式子
第二计算单元221分别对求取的ni值向上或向下取整并代入式子
综上所述,本发明实施例提供了一种最优线程数量求取方法及装置,所述方法应用于优化线程数量,所述方法包括:获取每一个步骤的线程切换损耗ci;根据每一个步骤的线程损耗ci、单个线程耗时ti与步骤总耗时t的关系:
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本发明各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应所述以权利要求的保护范围为准。