函数选取方法和服务器与流程

文档序号:15557690发布日期:2018-09-29 01:30阅读:112来源:国知局

本说明书实施例涉及计算机技术领域,特别涉及一种函数选取方法和服务器。



背景技术:

在应用程序的生命周期中,当一个应用程序自身发生代码升级、版本迭代或者漏洞修复等变化时,或者,与该应用程序相关联的其它应用程序发生代码升级、版本迭代或者漏洞修复等变化时,通常需要定位出该应用程序中的耗时函数,以便对该应用程序的响应时间进行优化。所述耗时函数可以为运行时间较长的函数。所述响应时间可以包括启动时间、执行某一功能的时间等。

在相关技术中,可以获取应用程序的跟踪文件(trace文件),并可以采用人工的方式来分析所述跟踪文件以从中识别出耗时函数。例如开发人员可以借助traceview(一种测试应用程序性能的工具)来分析所述跟踪文件以从中识别出耗时函数。但是,采用人工的方式来识别耗时函数,效率和准确性较低,难以满足实际的需求。



技术实现要素:

本说明书实施例的目的是提供一种函数选取方法和服务器,以提高耗时函数识别的效率和准确性。

为实现上述目的,本说明书实施例提供一种函数选取方法,包括:运行源代码中包括调试代码的应用程序,得到所述应用程序的运行状态信息;所述运行状态信息包括线程标识对应的函数调用信息;所述函数调用信息包括函数标识以及函数标识对应的时间戳;分析预设线程标识对应的函数调用信息,得到所述预设线程标识对应的至少一个函数调用链;每个所述函数调用链包括至少一个函数标识;从所述至少一个函数调用链中选取对应的运行时间大于或等于预设时间阈值的函数标识;函数标识对应的运行时间基于该函数标识对应的时间戳得到。

为实现上述目的,本说明书实施例提供一种服务器,包括:运行单元,用于运行源代码中包括调试代码的应用程序,得到所述应用程序的运行状态信息;所述运行状态信息包括线程标识对应的函数调用信息;所述函数调用信息包括函数标识以及函数标识对应的时间戳;分析单元,用于分析预设线程标识对应的函数调用信息,得到所述预设线程标识对应的至少一个函数调用链;每个所述函数调用链包括至少一个函数标识;选取单元,用于从所述至少一个函数调用链中选取对应的运行时间大于或等于预设时间阈值的函数标识;函数标识对应的运行时间基于该函数标识对应的时间戳得到。

为实现上述目的,本说明书实施例提供一种服务器,包括:存储器,用于存储计算机指令;处理器,用于执行所述计算机指令实现以下步骤:运行源代码中包括调试代码的应用程序,得到所述应用程序的运行状态信息;所述运行状态信息包括线程标识对应的函数调用信息;所述函数调用信息包括函数标识以及函数标识对应的时间戳;分析预设线程标识对应的函数调用信息,得到所述预设线程标识对应的至少一个函数调用链;每个所述函数调用链包括至少一个函数标识;从所述至少一个函数调用链中选取对应的运行时间大于或等于预设时间阈值的函数标识;函数标识对应的运行时间基于该函数标识对应的时间戳得到。

由以上本说明书实施例提供的技术方案可见,本说明书实施例中,持续集成服务器可以运行源代码中包括调试代码的应用程序,得到所述应用程序的运行状态信息;可以分析预设线程标识对应的函数调用信息,得到所述预设线程标识对应的至少一个函数调用链;可以从所述至少一个函数调用链中选取对应的运行时间大于或等于预设时间阈值的函数标识。本说明书实施例中,所述持续集成服务器可以分析应用程序中预设线程标识对应的函数调用信息,得到至少一个函数调用链;可以基于预设时间阈值从所述至少一个函数调用链中过滤出耗时函数。这样,所述持续集成服务器可以提高耗时函数识别的效率和准确性。

附图说明

为了更清楚地说明本说明书实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为本说明书实施例一种函数选取系统的示意图;

图2为本说明书实施例一种函数选取方法的流程图;

图3为本说明书实施例一种服务器的功能结构图;

图4为本说明书实施例一种服务器的功能结构图。

具体实施方式

下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。

请参阅图1。本说明书实施例提供一种函数选取系统。所述函数选取系统可以包括版本服务器、持续集成服务器(continuousintegrationserver)和至少一个终端设备。

在本实施例中,所述终端设备可以为开发人员所使用的终端设备,例如可以为个人计算机(pc机)、或服务器等。开发人员可以使用所述终端设备来编辑应用程序的源代码。所述版本服务器可以用于存储并管理应用程序各个版本的源代码。例如,所述版本服务器可以运行有svn(subversion)、cvs(concurrentversionsystem)等应用程序版本控制系统;可以基于所述应用程序版本控制系统来管理应用程序各个版本的源代码。所述持续集成服务器可以用于对应用程序的源代码进行编译和测试。

在本实施例中,所述终端设备可以向所述版本服务器上传应用程序的源代码。所述版本服务器可以接收并存储应用程序的源代码。所述持续集成服务器可以从所述版本服务器中获取应用程序的源代码;可以编译所述应用程序的源代码,得到所述应用程序;可以对所述应用程序的性能进行测试,得到测试结果;可以向所述终端设备发送所述测试结果。所述终端设备可以接收所述测试结果。这样,通过所述测试结果,开发人员可以从所述应用程序的源代码中获取影响应用程序性能的函数。这里所述性能例如可以为启动时间、或耗电量等;所述函数可以理解为能够实现一定功能的计算机程序指令集合。

请参阅图2。本说明书实施例提供一种函数选取方法。所述函数选取方法以持续集成服务器为执行主体,可以包括以下步骤。

步骤s10:运行源代码中包括调试代码的应用程序,得到所述应用程序的运行状态信息。

在本实施例中,所述应用程序可以为用于完成一项或多项工作的计算机程序。所述应用程序具体可以为任意类型的应用程序,例如可以为支付类型的应用程序、视频播放类型的应用程序、或图像处理类型的应用程序等。

在本实施例中,在应用程序的开发阶段,开发人员可以在所述应用程序的源代码中注入调试代码,以便在运行所述应用程序时能够得到所述应用程序的运行状态信息。在后续过程中通过分析所述运行状态信息,便可以发现所述应用程序源代码中的缺陷。所述调试代码可以包括调试函数。所述调试函数可以用于生成运行状态信息。所述调试函数例如可以包括debug.startmethodtracing、和debug.stopmethodtracing等。当然,所述调试代码还可以包括其它的功能函数,例如检测函数。所述检测函数可以用于在检测到满足特定条件时触发所述调试函数,例如在检测到根目录存在某一文件时触发所述调试函数。

在本实施例中,所述运行状态信息可以包括应用程序的至少一个线程的线程标识、以及线程标识对应的函数调用信息等。所述线程标识可以用于标识线程,例如可以为线程的名称、或编号等。所述函数调用信息可以用于描述线程标识标识的线程所调用的函数。所述函数调用信息具体可以包括至少一个函数标识、以及函数标识对应的时间戳等。所述函数标识可以用于标识函数,例如可以为函数的名称、或编号等。所述时间戳可以包括进入时间戳和退出时间戳。所述进入时间戳可以用于表示函数标识标识的函数的进入时刻;所述退出时间戳可以用于表示函数标识标识的函数的退出时刻。基于所述进入时间戳和所述退出时间戳能够计算出函数标识标识的函数的运行时间。需要说明的是,鉴于一个线程可以一次或多次调用一个函数,所述函数调用信息中的函数标识可以对应一对或多对时间戳,每对时间戳可以包括一个进入时间戳和一个退出时间戳。

在本实施例的一个场景示例中,所述持续集成服务器可以运行源代码中包括调试代码的应用程序,进而得到跟踪文件(trace文件)。所述跟踪文件可以包括所述应用程序的运行状态信息。具体地,例如,所述跟踪文件可以包括:

trace(threadidactionusecsclass.method):

……

12693ent16752.....android.os.handler.dispatchmessage;

……

12622ent38450........android.os.messagequeue.next;

……

12693xit18976.....android.os.handler.dispatchmessage;

……

12622xit49559........android.os.messagequeue.next;

……。

上述跟踪文件中;

threadid表示线程标识。例如,线程标识12622用于标识线程main;线程标识12693用于标识线程onlinemonitor。

class.method表示函数标识。例如,android.os.handler.dispatchmessage和android.os.messagequeue.next分别为函数标识。

action表示动作。例如,action可以包括ent和xit。ent表示进入函数;xit表示退出函数。

usecs表示时间戳。例如,16752为函数标识android.os.handler.dispatchmessage对应的进入时间戳;18976为函数标识android.os.handler.dispatchmessage对应的退出时间戳。

在本实施例的一个实施方式中,考虑到开发人员通过在应用程序源代码的不同位置注入调试代码,便可以得到所述应用程序在不同运行阶段的运行状态信息。例如,开发人员通过在应用程序源代码的启动代码处注入调试代码,便可以得到所述应用程序在启动阶段的运行状态信息。所述启动代码可以为应用程序在启动阶段执行的代码。如此,所述运行状态信息可以包括所述应用程序在预设运行阶段的运行状态信息。所述预设运行阶段可以包括启动阶段。当然,所述预设运行阶段还可以包括其它阶段,例如执行某一功能的阶段等。

在本实施例中,所述持续集成服务器可以接收版本服务器发来的应用程序的源代码,所述应用程序的源代码中可以包括调试代码;可以基于所述应用程序的源代码,生成所述应用程序;可以运行所述应用程序,得到所述应用程序的运行状态信息。具体地,所述持续集成服务器可以编译所述应用程序的源代码,得到所述应用程序。所述版本服务器可以每间隔预设时间周期,向所述持续集成服务器发送自身存储的所述应用程序最新版本的源代码。所述预设时间周期可以根据实际需要灵活设定,例如可以为10天、25天、或30天等。或者,鉴于所述版本服务器通常认为接收到的源代码为所述应用程序最新版本的源代码,所述版本服务器可以在接到终端设备发来的应用程序的源代码后,存储并向所述持续集成服务器发送所述应用程序的源代码。

在本实施例的一个场景示例中,所述应用程序的源代码中可以包括调试代码。所述调试代码可以包括检测函数和调试函数。所述检测函数可以用于在检测到根目录存在某一文件后触发所述调试函数,所述文件例如可以为abc.txt。所述调试函数可以包括debug.startmethodtracing、和debug.stopmethodtracing。具体地,所述调试函数debug.startmethodtracing可以位于所述应用程序源代码中启动代码的起始位置;所述调试函数debug.stopmethodtracing可以位于所述应用程序源代码中启动代码的结束位置。

在本场景示例中,开发人员在编辑完成应用程序的源代码后,可以使用终端设备向版本服务器发送所述应用程序的源代码。所述版本服务器可以接收并存储所述应用程序的源代码;可以向所述持续集成服务器发送所述应用程序的源代码。所述持续集成服务器可以接收所述应用程序的源代码;可以编译所述应用程序的源代码,得到所述应用程序。所述持续集成服务器可以在根目录写入预先约定的文件(例如文件abc.txt)以便触发所述应用程序源代码中的检测函数;可以运行所述应用程序,得到跟踪文件。所述跟踪文件可以包括所述应用程序在启动阶段的运行状态信息。

步骤s12:分析预设线程标识对应的函数调用信息,得到所述预设线程标识对应的至少一个函数调用链。

在本实施例中,所述预设线程标识的数量可以为一个或多个。所述预设线程标识标识的线程可以为所述应用程序的部分或全部线程。例如,所述预设线程标识标识的线程可以为所述应用程序的与启动相关的线程。具体地,例如,所述预设线程标识可以包括线程标识12622和12693,线程标识12622可以用于标识线程main,线程标识12693可以用于标识线程onlinemonitor。所述函数调用链可以包括至少一个函数标识。每个所述函数调用链中的函数标识标识的函数间可以具有逐级调用关系。

在本实施例的一个场景示例中,某一函数调用链可以包括16个函数标识,具体包括:

上述函数调用链中的函数标识标识的函数间可以具有逐级调用关系。具体地,函数标识com.android.internal.os.zygoteinit$methodandargscaller.run标识的函数可以调用函数标识java.lang.reflect.method.invoke标识的函数;函数标识java.lang.reflect.method.invoke标识的函数可以调用函数标识android.app.activitythread.main标识的函数;依次类推,函数标识com.alibaba.fastjson.serializer.listserializer.write标识的函数可以调用函数标识com.alibaba.fastjson.serializer.mapserializer.write标识的函数。

在本实施例中,针对每个预设线程,所述持续集成服务器可以获取该预设线程在所述运行状态信息中对应的函数调用信息;可以以获取的函数调用信息为目标函数调用信息;可以分析所述目标函数调用信息中各个函数标识标识的函数间的调用关系,得到该线程标识对应的至少一个函数调用链。

步骤s14:从所述至少一个函数调用链中选取对应的运行时间大于或等于预设时间阈值的函数标识。

在本实施例中,函数标识对应的运行时间可以基于该函数标识对应的时间戳得到。具体地,如前所述,函数标识对应的时间戳可以包括进入时间戳和退出时间戳。如此,针对所述至少一个函数调用链中的每个函数标识,所述持续集成服务器可以以该函数标识对应的退出时间戳表示的时刻为退出时刻;可以以该函数标识对应的进入时间戳表示的时刻为进入时刻;可以计算所述退出时刻和所述进入时刻之间的差值,作为该函数标识对应的运行时间。

在本实施例中,针对所述至少一个函数调用链中的每个函数调用链,所述持续集成服务器可以查找该函数调用链中是否包括运行时间大于或等于所述预设时间阈值的函数标识;在该函数调用链中包括运行时间大于或等于预设时间阈值的函数标识时,可以从该函数调用链中选取对应的运行时间大于或等于所述预设时间阈值的函数标识。所述预设时间阈值可以根据实际需要灵活设定,例如可以为100ms、150ms、或180ms等。

需要说明的是,鉴于一个函数标识可以对应一对或多对时间戳,一个函数标识可以对应一个或多个运行时间。在函数标识对应的一个或多个运行时间中的任意一个运行时间大于或等于所述预设时间阈值时,所述持续集成服务器便可以认为该函数标识对应的运行时间大于或等于所述预设时间阈值。

还需要说明的是,在一个函数的运行时间大于或等于所述预设时间阈值时,逐级调用直至该函数的其它各个函数的运行时间也均大于或等于所述预设时间阈值。如此,针对所述至少一个函数调用链中的每个函数调用链,所述持续集成服务器从该函数调用链中选取的函数标识能够形成该函数调用链的一个子函数调用链。

在本实施例的一个场景示例中,所述至少一个函数调用链可以包括函数调用链ca和cb。

在本场景示例中,函数调用链ca可以包括fa、fb、fc、fd、fe等5个函数标识。函数调用链ca中的函数标识标识的函数间可以具有逐级调用关系。具体地,函数标识fa标识的函数可以调用函数标识fb标识的函数;函数标识fb标识的函数可以调用函数标识fc标识的函数;依次类推,函数标识fd标识的函数可以调用函数标识fe标识的函数。在函数调用链ca中,函数标识fa、fb、fc对应的运行时间大于所述预设时间阈值。

在本场景示例中,函数调用链cb可以包括fc、ff、fg、fh、fi、fj等6个函数标识。函数调用链cb中的函数标识标识的函数间可以具有逐级调用关系。具体地,函数标识fc标识的函数可以调用函数标识ff标识的函数;函数标识ff标识的函数可以调用函数标识fg标识的函数;依次类推,函数标识fi标识的函数可以调用函数标识fj标识的函数。在函数调用链cb中,函数标识fc、ff、fg、fh对应的运行时间大于所述预设时间阈值。

在本场景示例中,所述持续集成服务器可以从函数调用链ca中选取函数标识fa、fb、fc。函数标识fa、fb、fc能够形成函数调用链ca的一个子函数调用链。所述持续集成服务器可以从函数调用链cb中选取函数标识fc、ff、fg、fh。函数标识fc、ff、fg、fh能够形成函数调用链cb的一个子函数调用链。

在本实施例的一个实施方式中,所述持续集成服务器还可以获取选取的函数标识所对应的运行时间。

在本实施方式的一个场景示例中,所述持续集成服务器选取的函数标识以及获取的运行时间可以如下:

其中,函数标识android.os.handler.dispatchmessage、android.os.handler.handlecallback、com.alipay.mobile.nebulacore.bridge.h5bridgeimpl$2.run、com.alipay.mobile.nebulacore.bridge.h5bridgeimpl.access$100、com.alipay.mobile.nebulacore.bridge.h5bridgeimpl.executeweb、com.alibaba.fastjson.json.tojsonstring、com.alibaba.fastjson.serializer.jsonserializer.write(783ms)、com.alibaba.fastjson.serializer.mapserializer.write、com.alibaba.fastjson.serializer.mapserializer.write、com.alibaba.fastjson.serializer.listserializer.write、com.alibaba.fastjson.serializer.listserializer.write、以及com.alibaba.fastjson.serializer.mapserializer.write能够形成一个子函数调用链。函数标识android.os.handler.dispatchmessage、android.os.handler.handlecallback、com.alipay.mobile.nebulacore.bridge.h5bridgeimpl$2.run、com.alipay.mobile.nebulacore.bridge.h5bridgeimpl.access$100、com.alipay.mobile.nebulacore.bridge.h5bridgeimpl.executeweb、com.alibaba.fastjson.json.tojsonstring、com.alibaba.fastjson.serializer.jsonserializer.write、com.alibaba.fastjson.serializer.mapserializer.write、com.alibaba.fastjson.serializer.mapserializer.write、com.alibaba.fastjson.serializer.listserializer.write、com.alibaba.fastjson.serializer.listserializer.write、以及com.alibaba.fastjson.serializer.mapserializer.write能够形成一个子函数调用链。

以下介绍本实施例中函数选取方法的一个具有应用场景。值得注意的是,本场景示例仅是为了更好地说明本实施例,并不构成对本实施例的不当限定。

在本场景示例中,在第一时刻,版本服务器可以向持续集成服务器发送应用程序第一版本的源代码。所述持续集成服务器可以接收所述应用程序第一版本的源代码,所述应用程序第一版本的源代码中可以包括调试代码;可以编译所述应用程序第一版本的源代码,得到所述应用程序的第一版本;可以运行所述应用程序的第一版本,得到所述应用程序的第一版本在启动阶段的运行状态信息;可以分析启动相关线程在所述运行状态信息对应的函数调用信息,得到至少一个函数调用链;可以从所述至少一个函数调用链中选取对应的运行时间大于或等于预设时间阈值的函数标识;可以将选取的函数标识标识的函数作为耗时函数。

在本场景示例中,在后续的第二时刻,版本服务器可以向持续集成服务器发送应用程序第二版本的源代码。所述持续集成服务器可以接收所述应用程序第二版本的源代码,所述应用程序第二版本的源代码中可以包括调试代码;可以编译所述应用程序第二版本的源代码,得到所述应用程序的第二版本;可以运行所述应用程序的第二版本,得到所述应用程序的第二版本在启动阶段的运行状态信息;可以分析启动相关线程在所述运行状态信息对应的函数调用信息,得到至少一个函数调用链;可以从所述至少一个函数调用链中选取对应的运行时间大于或等于预设时间阈值的函数标识;可以将选取的函数标识标识的函数作为耗时函数。

在本场景示例中,所述持续集成服务器可以将所述应用程序第一版本中的耗时函数与所述应用程序第二版本中的耗时函数进行比对;可以输出所述应用程序第二版本中新增加的耗时函数,或者,可以输出在所述应用程序第二版本中运行时间变长的耗时函数。这样开发人员能够发现所述应用程序第二版本源代码中的缺陷,便于对所述应用程序第二版本的源代码进行优化。

在本实施例中,所述持续集成服务器可以运行源代码中包括调试代码的应用程序,得到所述应用程序的运行状态信息;可以分析预设线程标识对应的函数调用信息,得到所述预设线程标识对应的至少一个函数调用链;可以从所述至少一个函数调用链中选取对应的运行时间大于或等于预设时间阈值的函数标识。在本实施例中,所述持续集成服务器可以分析应用程序中预设线程标识对应的函数调用信息,得到至少一个函数调用链;可以基于预设时间阈值从所述至少一个函数调用链中过滤出耗时函数。这样,所述持续集成服务器可以提高耗时函数识别的效率和准确性。

请参阅图3。本说明书实施例还提供一种服务器。所述服务器可以包括以下单元。

运行单元20,用于运行源代码中包括调试代码的应用程序,得到所述应用程序的运行状态信息;所述运行状态信息包括线程标识对应的函数调用信息;所述函数调用信息包括函数标识以及函数标识对应的时间戳;

分析单元22,用于分析预设线程标识对应的函数调用信息,得到所述预设线程标识对应的至少一个函数调用链;每个所述函数调用链包括至少一个函数标识;

选取单元24,用于从所述至少一个函数调用链中选取对应的运行时间大于或等于预设时间阈值的函数标识;函数标识对应的运行时间基于该函数标识对应的时间戳得到。

请参阅图4。本说明书实施例还提供另一种服务器。所述服务器可以包括存储器和处理器。

在本实施例中,所述存储器包括但不限于动态随机存取存储器(dynamicrandomaccessmemory,dram)和静态随机存取存储器(staticrandomaccessmemory,sram)等。所述存储器可以用于存储计算机指令。

在本实施例中,所述处理器可以按任何适当的方式实现。例如,所述处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(applicationspecificintegratedcircuit,asic)、可编程逻辑控制器和嵌入微控制器的形式等等。所述处理器可以用于执行所述计算机指令实现以下步骤:运行源代码中包括调试代码的应用程序,得到所述应用程序的运行状态信息;所述运行状态信息包括线程标识对应的函数调用信息;所述函数调用信息包括函数标识以及函数标识对应的时间戳;分析预设线程标识对应的函数调用信息,得到所述预设线程标识对应的至少一个函数调用链;每个所述函数调用链包括至少一个函数标识;从所述至少一个函数调用链中选取对应的运行时间大于或等于预设时间阈值的函数标识;函数标识对应的运行时间基于该函数标识对应的时间戳得到。

需要说明的是,本申请说明书中各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于服务器实施例而言,由于其基本相似于函数选取方法实施例,所以描述的比较简单,相关之处参见函数选取方法实施例的部分说明即可。

另外,本领域技术人员应当能够理解的是,所属领域技术人员在阅读完本申请说明书之后,可以无需创造性劳动想到本申请文件中列举的部分或全部实施方式之间可以组合,这些组合也在本申请公开和保护的范围内。

在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(programmablelogicdevice,pld)(例如现场可编程门阵列(fieldprogrammablegatearray,fpga))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片pld上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片2。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logiccompiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(hardwaredescriptionlanguage,hdl),而hdl也并非仅有一种,而是有许多种,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)与verilog2。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。

上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。

本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的消费电子设备、网络pc、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。

本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1