CN114356311A - 代码性能数据的交互方法、装置、介质及电子设备 - Google Patents
代码性能数据的交互方法、装置、介质及电子设备 Download PDFInfo
- Publication number
- CN114356311A CN114356311A CN202210016437.9A CN202210016437A CN114356311A CN 114356311 A CN114356311 A CN 114356311A CN 202210016437 A CN202210016437 A CN 202210016437A CN 114356311 A CN114356311 A CN 114356311A
- Authority
- CN
- China
- Prior art keywords
- function
- performance
- code
- source code
- target
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000003993 interaction Effects 0.000 title claims abstract description 27
- 230000000007 visual effect Effects 0.000 claims abstract description 85
- 230000006870 function Effects 0.000 claims description 273
- 238000004590 computer program Methods 0.000 claims description 16
- 238000012545 processing Methods 0.000 claims description 11
- 238000010586 diagram Methods 0.000 description 16
- 238000004891 communication Methods 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 6
- 238000005457 optimization Methods 0.000 description 6
- 238000005314 correlation function Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000002452 interceptive effect Effects 0.000 description 2
- 239000013307 optical fiber Substances 0.000 description 2
- 230000008569 process Effects 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Landscapes
- User Interface Of Digital Computer (AREA)
Abstract
本公开涉及一种代码性能数据的交互方法、装置、介质及电子设备,包括:根据源代码运行时的代码性能数据生成可视图;若接收到用户对源代码中的第一函数进行的第一操作,根据预设关联关系,确定第一函数在可视图中对应的性能框作为目标性能框,并在可视图中对目标性能框进行突出显示;若接收到用户对可视图中的第一性能框进行的第二操作,根据预设关联关系,确定第一性能框对应的目标函数,并在源代码中对目标函数进行突出显示。这样,开发人员无需再分别在代码性能数据中和源代码中查找相对应位置的数据,方便了用户快速查看代码性能数据,提高了用户根据该代码性能数据对代码进行定向调试、定向优化的效率。
Description
技术领域
本公开涉及软件开发技术领域,具体地,涉及一种代码性能数据的交互方法、装置、介质及电子设备。
背景技术
目前的诸多代码编辑器中,有各种能够展示代码在运行时的代码性能数据的方式,如火焰图(The Flame Graph),能够对代码运行时的堆栈跟踪数据进行可视化,以便于开发者更加直接快速准确地识别最常用的代码路径。开发者可以通过分析火焰图发现具有调用耗时等性能问题的函数,定向优化,从而取得良好的性能优化成果。但是,无论是何种对代码性能数据进行展示的方法,其对代码性能数据的展示往往与源代码之间是相互独立的,开发者只能分别对源代码和代码性能数据进行浏览,然后自行在源代码数据中找到在代码性能数据中显示具有性能问题的函数,或者自行在代码性能数据中查找开发者想要着重分析的函数对应的数据。
发明内容
提供该发明内容部分以便以简要的形式介绍构思,这些构思将在后面的具体实施方式部分被详细描述。该发明内容部分并不旨在标识要求保护的技术方案的关键特征或必要特征,也不旨在用于限制所要求的保护的技术方案的范围。
第一方面,本公开提供一种代码性能数据的交互方法,所述方法包括:
根据源代码运行时的代码性能数据生成可视图,所述可视图中包括所述源代码中的各函数分别对应的性能框,所述性能框用于显示所述函数对应代码性能数据,并与所述函数一一对应;
若接收到用户对源代码中的第一函数进行的第一操作,根据预设关联关系,确定所述第一函数在所述可视图中对应的性能框作为目标性能框,并在所述可视图中对所述目标性能框进行突出显示;
若接收到用户对所述可视图中的第一性能框进行的第二操作,根据所述预设关联关系,确定所述第一性能框对应的目标函数,并在所述源代码中对所述目标函数进行突出显示。
第二方面,本公开提供一种代码性能数据的交互装置,所述装置包括:
可视图生成模块,用于根据源代码运行时的代码性能数据生成可视图,所述可视图中包括所述源代码中的各函数分别对应的性能框,所述性能框用于显示所述函数对应代码性能数据,并与所述函数一一对应;
第一交互模块,用于若接收到用户对源代码中的第一函数进行的第一操作,根据预设关联关系,确定所述第一函数在所述可视图中对应的性能框作为目标性能框,并在所述可视图中对所述目标性能框进行突出显示;
第二交互模块,用于若接收到用户对所述可视图中的第一性能框进行的第二操作,根据所述预设关联关系,确定所述第一性能框对应的目标函数,并在所述源代码中对所述目标函数进行突出显示。
第三方面,本公开提供一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现第一方面中实施例所述方法的步骤。
第四方面,本公开提供一种电子设备,包括:
存储装置,其上存储有计算机程序;
处理装置,用于执行所述存储装置中的所述计算机程序,以实现第一方面中实施例所述方法的步骤。
通过上述技术方案,能够在对代码性能数据进行展示的可视图与源代码之间提供一种交互方式,开发人员等用户能够简单通过点击的方式实现从可视图中跳转至源代码中的对应位置,或者从源代码中的对应函数跳转至可视图中对应的性能数据位置,用户无需再分别在代码性能数据中和源代码中查找相对应位置的数据,方便了用户快速查看代码性能数据,提高了用户根据该代码性能数据对代码进行定向调试、定向优化的效率。本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
结合附图并参考以下具体实施方式,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。贯穿附图中,相同或相似的附图标记表示相同或相似的元素。应当理解附图是示意性的,原件和元素不一定按照比例绘制。在附图中:
图1是根据本公开一示例性实施例示出的一种代码性能数据的交互方法的流程图。
图2是根据本公开又一示例性实施例示出的一种代码性能数据的交互方法的流程图。
图3是根据本公开又一示例性实施例示出的一种代码性能数据的交互方法的流程图。
图4是根据本公开又一示例性实施例示出的一种代码性能数据的交互方法的流程图。
图5是根据本公开一示例性实施例示出的一种代码性能数据的交互装置的结构框图。
图6是根据本公开又一示例性实施例示出的一种代码性能数据的交互装置的结构框图。
图7示出了适于用来实现本公开实施例的电子设备的结构示意图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
应当理解,本公开的方法实施方式中记载的各个步骤可以按照不同的顺序执行,和/或并行执行。此外,方法实施方式可以包括附加的步骤和/或省略执行示出的步骤。本公开的范围在此方面不受限制。
本文使用的术语“包括”及其变形是开放性包括,即“包括但不限于”。术语“基于”是“至少部分地基于”。术语“一个实施例”表示“至少一个实施例”;术语“另一实施例”表示“至少一个另外的实施例”;术语“一些实施例”表示“至少一些实施例”。其他术语的相关定义将在下文描述中给出。
需要注意,本公开中提及的“第一”、“第二”等概念仅用于对不同的装置、模块或单元进行区分,并非用于限定这些装置、模块或单元所执行的功能的顺序或者相互依存关系。
需要注意,本公开中提及的“一个”、“多个”的修饰是示意性而非限制性的,本领域技术人员应当理解,除非在上下文另有明确指出,否则应该理解为“一个或多个”。
本公开实施方式中的多个装置之间所交互的消息或者信息的名称仅用于说明性的目的,而并不是用于对这些消息或信息的范围进行限制。
图1是根据本公开一示例性实施例示出的一种代码性能数据的交互方法的流程图。如图1所示,所述方法包括步骤101至步骤103。
在步骤101中,根据源代码运行时的代码性能数据生成可视图,所述可视图中包括所述源代码中的各函数分别对应的性能框,所述性能框用于显示所述函数对应代码性能数据,并与所述函数一一对应。
该可视图可以是以火焰图(The Flame Graph)的形式来进行展示,例如,可视图中的每一列性能框表示一个堆栈跟踪(stack trace),其中的每一个性能框都表示一个栈帧(stack frame),每列性能框的高度表示栈的深度,整个可视图的宽度表示该代码性能数据的采样范围,每个性能框的宽度表示该性能框对应函数在采样中出现的频率,该频率与宽度成正比,例如,在某一性能框宽度宽的情况下,可以考虑该性能框对应函数的调用是否耗时过长。
上述火焰图仅为该可视图的其中一种表现形式,本申请对该可视图的表现形式不进行限定,只要能够将代码性能数据可视化得到图表形式,并且源代码中的各函数对应的代码性能数据,能够在该可视化得到的可视图中有对应的性能框来进行显示即可。
在步骤102中,若接收到用户对源代码中的第一函数进行的第一操作,根据预设关联关系,确定所述第一函数在所述可视图中对应的性能框作为目标性能框,并在所述可视图中对所述目标性能框进行突出显示。
该源代码的显示位置可以为在浏览窗口中打开的代码编辑界面。用户在需要查看该源代码中某一函数对应的性能数据时,可以直接通过对该代码编辑界面中的源代码中的函数进行该第一操作。
该预设关联关系是预先根据该可视图中的各个性能框分别对应的函数的位置路径来确定得到的,例如,该位置路径可以表示为“函数名:文件名:行号:列号”的形式。则根据该位置路径即可在源代码中定位得到对应函数的位置,并对其进行相应标记,以实现该预设关联关系的生成。
在一种可能的实施方式中,在用户开始进行源代码和可视图之间的交互之前,可以先对该可视图进行读取,并根据该可视图中出现的所有函数来对源代码进行相应的标记。该标记可以为任意形式,只要能够将可以在可视图中查找到相关代码性能数据的函数在源代码中明确地显示出来即可。例如,该标记可以为在相关函数前方增加符号标记,或者,也可以是将相关函数在源代码的显示页面中通过不同颜色的底色或字体颜色来与其他内容区分开来等等。这样,用户在进行源代码和可视图之间的交互时,能够更加清楚直观地获知源代码中的哪些函数能够进行该第一操作,以在可视图中查看相关的代码性能数据。
由于源代码中的函数与可视图中的性能框为一一对应关系,因此在用户对该第一函数进行该第一操作之后,能够根据该预设关联关系在可视图中确定得到与该第一函数对应的唯一性能框作为该目标性能框。同时,为了用户能够更加直观清楚地在可视图中对该目标性能框进行定位,可以将该目标性能框进行突出显示。该突出显示的方式可以包括多种,例如,将该目标性能框以区别于其他性能框的框体颜色来显示,或者也可以高亮显示等等,本申请中对该突出显示的具体形式不进行限定,只要能够使得用户能够快速在可视图中定位到该目标性能框即可。
该第一操作可以是对所述源代码中的所述第一函数进行的点击操作。该点击操作即可以是直接对该函数名称进行的点击,也可以是对该函数前方用于表征该函数在可视图中有对应性能框的符号标记所进行的点击等。
在步骤103中,若接收到用户对所述可视图中的第一性能框进行的第二操作,根据所述预设关联关系,确定所述第一性能框对应的目标函数,并在所述源代码中对所述目标函数进行突出显示。
用户除了能够通过对源代码中的函数进行操作来跳转至该可视图中的相关性能框之外,还能在可视图中对任意性能框进行该第二操作以直接跳转定位于该性能框对应的函数在该源代码中的位置。
该第二操作可以是对该可视图中的该第一性能框所进行的点击操作。
在一种可能的实施方式中,在用户对该第一性能框进行该第二操作之后,在确定该目标函数之前,可以先将该第一性能框标记出来,例如,通过加粗边框、边框变色等任意方式,以表征该第一性能框已经被用户执行了该第二操作,提高用户的操作体验。
在确定该预设关联关系确定该第一性能框对应的目标函数时,可以包括但不限于以下3种情况:
1、直接将该第一性能框对应的函数确定为所述目标函数;
2、将该第一性能框对应的第二函数,以及与该第二函数之间具有任意调用关系的第三函数,进行显示,以供用户在该第二函数和该第三函数之间进行该目标函数的确定;
3、既将该第一性能框对应的第二函数确定为目标函数,也会将该与该第二函数之间具有任意调用关系的第三函数和该第二函数统一显示,以便用户将第三函数中的任意函数重新确定为该目标函数以在该源代码中重新进行跳转。
本申请中不限定具体采用的确定目标函数的方式为何种,可以根据实际情况来对各种情况进行单独设置或组合设置等。不同情况下的具体交互操作将在后文中进行描述。
在确定得到该目标函数之后,则可以执行该跳转操作,将该目标函数在源代码中进行突出显示。对该目标函数进行突出显示的方式可以包括多种,例如,将该目标函数的函数名显示为与其他函数名不同的颜色,或者将该目标函数的函数名表示为选中状态等等,本申请中对该突出显示的具体形式不进行限定,只要能够使得用户能够快速在该源代码中定位到该目标函数即可。
通过上述技术方案,能够在对代码性能数据进行展示的可视图与源代码之间提供一种交互方式,开发人员等用户能够简单通过点击的方式实现从可视图中跳转至源代码中的对应位置,或者从源代码中的对应函数跳转至可视图中对应的性能数据位置,用户无需再分别在代码性能数据中和源代码中查找相对应位置的数据,方便了用户快速查看代码性能数据,提高了用户根据该代码性能数据对代码进行定向调试、定向优化的效率。
图2是根据本公开又一示例性实施例示出的一种代码性能数据的交互方法的流程图。如图2所示,所述方法包括步骤201至步骤203。
在步骤201中,若接收到用户对可视图中的第一性能框进行的第二操作,根据预设关联关系,确定所述第一性能框对应的函数为第二函数。
在步骤202中,将所述源代码中与所述第二函数之间具有调用关系的函数确定为第三函数。
在步骤203中,将所述第二函数和所述第三函数显示在所述可视图中的预设函数信息显示区域中。
在步骤204中,若接收到用户对所述预设函数信息显示区域中的函数进行的第三操作,则将所述第三操作对应的函数确定为所述目标函数,并在所述源代码中对所述目标函数进行突出显示。
针对上述确定该第一性能框对应的目标函数时的第二种情况,如图2所示,用户在对可视图中的第一性能框进行第二操作之后,不会直接确定得到任何目标函数,此时不会执行可视图与源代码之间的跳转操作,而是会先确定得到该第二函数和该第三函数,并将其显示在该预设函数信息显示区域中。该预设函数信息显示区域与可视图可以显示与同一个浏览窗口中,具体的排列布局在本公开中不进行限制。该第三函数所包括的函数数量与该第二函数在源代码中的调用情况相关,可以包括多个。
用户在对该第一性能框执行该第二操作之后,可以从该预设函数信息显示区域中所显示出来的多个函数中选择需要在源代码中进行查询定位的函数,并对其执行该第三操作,从而,被执行了还第三操作的函数则可以被确定为该目标函数,在源代码中被突出显示。
在一种可能的实施方式中,上述第三操作可以是对所述预设函数信息显示区域中的函数所进行的点击操作;或者,也可以是对设置在所述预设函数信息显示区域中的函数周围的源代码跳转接口图标所进行的点击操作。该源代码跳转接口的具体图标样式不限,与该预设函数信息显示区域中的函数之间的位置关系也不限,可以设置在函数的前方,也可以设置在函数的后方,或者,还可以将各个函数所在的显示框整个作为该接口,在用户点击该函数所在的显示框的任意位置时,即可实现对该函数对应的源代码进行跳转的目的。
在另一种可能的实施方式中,针对上述确定该第一性能框对应的目标函数时的第三种情况,用户在对可视图中的第一性能框进行第二操作之后,会直接将该性能框对应的函数确定为目标函数来进行跳转,并在源代码中对该目标函数进行突出显示;但同时,还会在该预设函数信息显示区域中显示该目标函数以及与该目标函数具有调用关系的所有其他函数,并且用户也能够通过对该预设函数信息显示区域中显示的函数进行该第三操作的方式,将被执行该第三操作的函数重新确定为该目标函数,并在源代码中对该目标函数进行突出显示。从而,用户在点击了该第一性能框之后,能够立即查看到源代码中与该第一性能框对应的函数的位置和函数的具体内容,也能够在该可视图所在的浏览窗口中的预设函数信息显示区域中查看到与该目标函数具有调用关系的其他函数的函数信息。这样,用户需要在源代码中查看与当前目标函数相关的其他调用函数在源代码中的相关代码数据时,可以直接从可视图所在浏览窗口中的预设函数信息显示区域中所显示的第三函数中进行快速选择,进一步方便了用户快速查看代码性能数据,提高了用户根据该代码性能数据对代码进行定向调试、定向优化的效率。
图3是根据本公开又一示例性实施例示出的一种代码性能数据的交互方法的流程图。如图3所示,所述方法包括步骤301和步骤302。
在步骤301中,确定所述目标性能框在所述可视图中的显示区域。
在步骤302中,若所述显示区域的水平宽度小于预设宽度,则将所述显示区域水平缩放至所述水平宽度不小于所述预设宽度。
其中,该目标性能框可以以SVG(Scalable Vector Graphics,可缩放的矢量图形)的格式进行显示,以实现该水平缩放的功能。
通过对该目标性能框的水平缩放,能够对该目标性能框中的局部细节更好的进行展示,也能够进一步便于用于在该可视图中定位该目标性能框,避免由于该第一函数对应的目标性能框在该可视图中对应的原始位置显示区域过窄过小,用户难以发现的问题。
图4是根据本公开又一示例性实施例示出的一种代码性能数据的交互方法的流程图。如图4所示,所述方法包括步骤401。
在步骤401中,若接收到用户对所述可视图中的第一性能框进行的第二操作,在所述确定所述第一性能框对应的目标函数之后,将所述目标函数对应的第二性能框在所述可视图中进行突出显示。其中,该第二性能框可以与该第一性能框为同一性能框;或者,该第二性能框可以与该第一性能框也可以为不同的性能框,例如,该第二性能框可以是该第一性能框对应函数具有调用关系的其他函数所对应的性能框。
对该第二性能框进行突出显示的方式,可以与前文中,接收到用户对源代码中的第一函数进行的第一操作后,对确定得到的目标性能框进行突出显示的方式相同。
另外,在确定得到该目标函数之后,还可以对该目标函数对应的第二性能框进行显示区域的判断,如步骤301和步骤302中所示,判断该第二性能框的显示区域的水平宽度是否小于预设宽度,若是,则将该显示区域水平缩放至该水平宽度不小于该预设宽度的状态。这样,不仅能够自动定位到该源代码中的函数位置,而且还能够便于用于查看可视图中的该第二性能框中的性能数据,进一步提高了用户的交互体验。
图5是根据本公开一示例性实施例示出的一种代码性能数据的交互装置的结构框图。图5所示,其特征在于,所述装置包括:可视图生成模块10,用于根据源代码运行时的代码性能数据生成可视图,所述可视图中包括所述源代码中的各函数分别对应的性能框,所述性能框用于显示所述函数对应代码性能数据,并与所述函数一一对应;第一交互模块20,用于若接收到用户对源代码中的第一函数进行的第一操作,根据预设关联关系,确定所述第一函数在所述可视图中对应的性能框作为目标性能框,并在所述可视图中对所述目标性能框进行突出显示;第二交互模块30,用于若接收到用户对所述可视图中的第一性能框进行的第二操作,根据所述预设关联关系,确定所述第一性能框对应的目标函数,并在所述源代码中对所述目标函数进行突出显示。
通过上述技术方案,能够在对代码性能数据进行展示的可视图与源代码之间提供一种交互方式,开发人员等用户能够简单通过点击的方式实现从可视图中跳转至源代码中的对应位置,或者从源代码中的对应函数跳转至可视图中对应的性能数据位置,用户无需再分别在代码性能数据中和源代码中查找相对应位置的数据,方便了用户快速查看代码性能数据,提高了用户根据该代码性能数据对代码进行定向调试、定向优化的效率。
图6是根据本公开又一示例性实施例示出的一种代码性能数据的交互装置的结构框图。图6所示,若接收到用户对所述源代码中的第一函数进行的第一操作,所述装置还包括:确定模块40,用于确定所述目标性能框在所述可视图中的显示区域;缩放模块50,用于若所述显示区域的水平宽度小于预设宽度,则将所述显示区域水平缩放至所述水平宽度不小于所述预设宽度。
在一种可能的实施方式中,所述第二交互模块30还用于:将所述第一性能框对应的函数确定为所述目标函数。
在一种可能的实施方式中,所述第二交互模块30还用于:确定所述第一性能框对应的函数为第二函数;将所述源代码中与所述第二函数之间具有调用关系的函数确定为第三函数;将所述第二函数和所述第三函数显示在所述可视图中的预设函数信息显示区域中;若接收到用户对所述预设函数信息显示区域中的函数进行的第三操作,则将被执行所述第三操作的函数确定为所述目标函数。
在一种可能的实施方式中,所述第三操作包括:对所述预设函数信息显示区域中的函数进行点击操作;或者对设置在所述预设函数信息显示区域中的函数周围的源代码跳转接口图标进行点击操作。
在一种可能的实施方式中,若接收到用户对所述可视图中的第一性能框进行的第二操作,则在所述确定所述第一性能框对应的目标函数之后,如图6所示,所述装置还包括:显示模块60,用于将所述目标函数对应的第二性能框在所述可视图中进行突出显示。
在一种可能的实施方式中,所述第一操作包括:对所述源代码中的所述第一函数进行点击操作。
下面参考图7,其示出了适于用来实现本公开实施例的电子设备700的结构示意图。本公开实施例中的终端设备可以包括但不限于诸如移动电话、笔记本电脑、数字广播接收器、PDA(个人数字助理)、PAD(平板电脑)、PMP(便携式多媒体播放器)、车载终端(例如车载导航终端)等等的移动终端以及诸如数字TV、台式计算机等等的固定终端。图7示出的电子设备仅仅是一个示例,不应对本公开实施例的功能和使用范围带来任何限制。
如图7所示,电子设备700可以包括处理装置(例如中央处理器、图形处理器等)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储装置708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有电子设备700操作所需的各种程序和数据。处理装置701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
通常,以下装置可以连接至I/O接口705:包括例如触摸屏、触摸板、键盘、鼠标、摄像头、麦克风、加速度计、陀螺仪等的输入装置706;包括例如液晶显示器(LCD)、扬声器、振动器等的输出装置707;包括例如磁带、硬盘等的存储装置708;以及通信装置709。通信装置709可以允许电子设备700与其他设备进行无线或有线通信以交换数据。虽然图7示出了具有各种装置的电子设备700,但是应理解的是,并不要求实施或具备所有示出的装置。可以替代地实施或具备更多或更少的装置。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在非暂态计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信装置709从网络上被下载和安装,或者从存储装置708被安装,或者从ROM 702被安装。在该计算机程序被处理装置701执行时,执行本公开实施例的方法中限定的上述功能。
需要说明的是,本公开上述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本公开中,计算机可读信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读信号介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:电线、光缆、RF(射频)等等,或者上述的任意合适的组合。
在一些实施方式中,客户端、服务器可以利用诸如HTTP(HyperText TransferProtocol,超文本传输协议)之类的任何当前已知或未来研发的网络协议进行通信,并且可以与任意形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(“LAN”),广域网(“WAN”),网际网(例如,互联网)以及端对端网络(例如,ad hoc端对端网络),以及任何当前已知或未来研发的网络。
上述计算机可读介质可以是上述电子设备中所包含的;也可以是单独存在,而未装配入该电子设备中。
上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该电子设备执行时,使得该电子设备:根据源代码运行时的代码性能数据生成可视图,所述可视图中包括所述源代码中的各函数分别对应的性能框,所述性能框用于显示所述函数对应的代码性能数据,并与所述函数一一对应;若接收到用户对源代码中的第一函数进行的第一操作,根据预设关联关系,确定所述第一函数在所述可视图中对应的性能框作为目标性能框,并在所述可视图中对所述目标性能框进行突出显示;若接收到用户对所述可视图中的第一性能框进行的第二操作,根据所述预设关联关系,确定所述第一性能框对应的目标函数,并在所述源代码中对所述目标函数进行突出显示。
可以以一种或多种程序设计语言或其组合来编写用于执行本公开的操作的计算机程序代码,上述程序设计语言包括但不限于面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言——诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)——连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本公开实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。其中,模块的名称在某种情况下并不构成对该模块本身的限定,例如,可视图生成模块还可以被描述为“根据源代码运行时的代码性能数据生成可视图的模块”。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上***(SOC)、复杂可编程逻辑设备(CPLD)等等。
在本公开的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行***、装置或设备使用或与指令执行***、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体***、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
根据本公开的一个或多个实施例,示例1提供了一种代码性能数据的交互方法所述方法包括:根据源代码运行时的代码性能数据生成可视图,所述可视图中包括所述源代码中的各函数分别对应的性能框,所述性能框用于显示所述函数对应代码性能数据,并与所述函数一一对应;若接收到用户对源代码中的第一函数进行的第一操作,根据预设关联关系,确定所述第一函数在所述可视图中对应的性能框作为目标性能框,并在所述可视图中对所述目标性能框进行突出显示;若接收到用户对所述可视图中的第一性能框进行的第二操作,根据所述预设关联关系,确定所述第一性能框对应的目标函数,并在所述源代码中对所述目标函数进行突出显示。
根据本公开的一个或多个实施例,示例2提供了示例1的方法,若接收到用户对所述源代码中的第一函数进行的第一操作,所述方法还包括:确定所述目标性能框在所述可视图中的显示区域;若所述显示区域的水平宽度小于预设宽度,则将所述显示区域水平缩放至所述水平宽度不小于所述预设宽度。
根据本公开的一个或多个实施例,示例3提供了示例1的方法,所述确定所述第一性能框对应的目标函数包括:将所述第一性能框对应的函数确定为所述目标函数。
根据本公开的一个或多个实施例,示例4提供了示例1的方法,所述确定所述第一性能框对应的目标函数包括:确定所述第一性能框对应的函数为第二函数;将所述源代码中与所述第二函数之间具有调用关系的函数确定为第三函数;将所述第二函数和所述第三函数显示在所述可视图中的预设函数信息显示区域中;若接收到用户对所述预设函数信息显示区域中的函数进行的第三操作,则将所述第三操作对应的函数确定为所述目标函数。
根据本公开的一个或多个实施例,示例5提供了示例4的方法,所述第三操作包括:对所述预设函数信息显示区域中的函数进行点击操作;或者对设置在所述预设函数信息显示区域中的函数周围的源代码跳转接口图标进行点击操作。
根据本公开的一个或多个实施例,示例6提供了示例1的方法,若接收到用户对所述可视图中的第一性能框进行的第二操作,在所述确定所述第一性能框对应的目标函数之后,所述方法还包括:将所述目标函数对应的第二性能框在所述可视图中进行突出显示。
根据本公开的一个或多个实施例,示例7提供了示例1的方法,所述第一操作包括:对所述源代码中的所述第一函数进行点击操作。
根据本公开的一个或多个实施例,示例8提供了一种代码性能数据的交互装置,所述装置包括:可视图生成模块,用于根据源代码运行时的代码性能数据生成可视图,所述可视图中包括所述源代码中的各函数分别对应的性能框,所述性能框用于显示所述函数对应代码性能数据,并与所述函数一一对应;第一交互模块,用于若接收到用户对源代码中的第一函数进行的第一操作,根据预设关联关系,确定所述第一函数在所述可视图中对应的性能框作为目标性能框,并在所述可视图中对所述目标性能框进行突出显示;第二交互模块,用于若接收到用户对所述可视图中的第一性能框进行的第二操作,根据所述预设关联关系,确定所述第一性能框对应的目标函数,并在所述源代码中对所述目标函数进行突出显示。
根据本公开的一个或多个实施例,示例9提供了一种计算机可读介质,其上存储有计算机程序,该程序被处理装置执行时实现示例1-7中任一项所述方法的步骤。
根据本公开的一个或多个实施例,示例10提供了一种电子设备,包括:
存储装置,其上存储有计算机程序;
处理装置,用于执行所述存储装置中的所述计算机程序,以实现示例1-7中任一项所述方法的步骤。
以上描述仅为本公开的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本公开中所涉及的公开范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离上述公开构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本公开中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
此外,虽然采用特定次序描绘了各操作,但是这不应当理解为要求这些操作以所示出的特定次序或以顺序次序执行来执行。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实施例中。相反地,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实施例中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
Claims (10)
1.一种代码性能数据的交互方法,其特征在于,所述方法包括:
根据源代码运行时的代码性能数据生成可视图,所述可视图中包括所述源代码中的各函数分别对应的性能框,所述性能框用于显示所述函数对应的代码性能数据,并与所述函数一一对应;
若接收到用户对源代码中的第一函数进行的第一操作,根据预设关联关系,确定所述第一函数在所述可视图中对应的性能框作为目标性能框,并在所述可视图中对所述目标性能框进行突出显示;
若接收到用户对所述可视图中的第一性能框进行的第二操作,根据所述预设关联关系,确定所述第一性能框对应的目标函数,并在所述源代码中对所述目标函数进行突出显示。
2.根据权利要求1所述的方法,其特征在于,若接收到用户对所述源代码中的第一函数进行的第一操作,所述方法还包括:
确定所述目标性能框在所述可视图中的显示区域;
若所述显示区域的水平宽度小于预设宽度,则将所述显示区域水平缩放至所述水平宽度不小于所述预设宽度。
3.根据权利要求1所述的方法,其特征在于,所述确定所述第一性能框对应的目标函数包括:
将所述第一性能框对应的函数确定为所述目标函数。
4.根据权利要求1所述的方法,其特征在于,所述确定所述第一性能框对应的目标函数包括:
确定所述第一性能框对应的函数为第二函数;
将所述源代码中与所述第二函数之间具有调用关系的函数确定为第三函数;
将所述第二函数和所述第三函数显示在所述可视图中的预设函数信息显示区域中;
若接收到用户对所述预设函数信息显示区域中的函数进行的第三操作,则将被执行所述第三操作的函数确定为所述目标函数。
5.根据权利要求4所述的方法,其特征在于,所述第三操作包括:
对所述预设函数信息显示区域中的函数进行点击操作;或者
对设置在所述预设函数信息显示区域中的函数周围的源代码跳转接口图标进行点击操作。
6.根据权利要求1所述的方法,其特征在于,若接收到用户对所述可视图中的第一性能框进行的第二操作,则在所述确定所述第一性能框对应的目标函数之后,所述方法还包括:
将所述目标函数对应的第二性能框在所述可视图中进行突出显示。
7.根据权利要求1所述的方法,其特征在于,所述第一操作包括:对所述源代码中的所述第一函数进行点击操作。
8.一种代码性能数据的交互装置,其特征在于,所述装置包括:
可视图生成模块,用于根据源代码运行时的代码性能数据生成可视图,所述可视图中包括所述源代码中的各函数分别对应的性能框,所述性能框用于显示所述函数对应代码性能数据,并与所述函数一一对应;
第一交互模块,用于若接收到用户对源代码中的第一函数进行的第一操作,根据预设关联关系,确定所述第一函数在所述可视图中对应的性能框作为目标性能框,并在所述可视图中对所述目标性能框进行突出显示;
第二交互模块,用于若接收到用户对所述可视图中的第一性能框进行的第二操作,根据所述预设关联关系,确定所述第一性能框对应的目标函数,并在所述源代码中对所述目标函数进行突出显示。
9.一种计算机可读介质,其上存储有计算机程序,其特征在于,该程序被处理装置执行时实现权利要求1-7中任一项所述方法的步骤。
10.一种电子设备,其特征在于,包括:
存储装置,其上存储有计算机程序;
处理装置,用于执行所述存储装置中的所述计算机程序,以实现权利要求1-7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210016437.9A CN114356311B (zh) | 2022-01-07 | 2022-01-07 | 代码性能数据的交互方法、装置、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210016437.9A CN114356311B (zh) | 2022-01-07 | 2022-01-07 | 代码性能数据的交互方法、装置、介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114356311A true CN114356311A (zh) | 2022-04-15 |
CN114356311B CN114356311B (zh) | 2024-07-19 |
Family
ID=81106806
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210016437.9A Active CN114356311B (zh) | 2022-01-07 | 2022-01-07 | 代码性能数据的交互方法、装置、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114356311B (zh) |
Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110067018A1 (en) * | 2009-09-15 | 2011-03-17 | International Business Machines Corporation | Compiler program, compilation method, and computer system |
CN105229617A (zh) * | 2013-05-21 | 2016-01-06 | 肯赛里克斯公司 | 用于导航应用代码的图表 |
US9274771B1 (en) * | 2014-09-22 | 2016-03-01 | Oracle International Corporation | Automated adaptive compiler optimization |
US20190303564A1 (en) * | 2018-03-30 | 2019-10-03 | Ca, Inc. | Automated code highlighting to identify risk in software programming |
CN110618933A (zh) * | 2019-08-15 | 2019-12-27 | 华为技术有限公司 | 性能分析方法与***、电子设备与存储介质 |
CN110941553A (zh) * | 2019-11-22 | 2020-03-31 | 山东英信计算机技术有限公司 | 一种代码检测方法、装置、设备及可读存储介质 |
CN111104104A (zh) * | 2019-11-04 | 2020-05-05 | 珠海亿智电子科技有限公司 | 函数调用时间和统计结果可视化的方法、装置及可读介质 |
US20200192789A1 (en) * | 2018-12-18 | 2020-06-18 | Sap Se | Graph based code performance analysis |
CN111382044A (zh) * | 2020-02-29 | 2020-07-07 | 深圳市腾讯信息技术有限公司 | 性能瓶颈的定位方法、定位装置、电子设备及存储介质 |
CN112732538A (zh) * | 2019-10-28 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 一种面板性能分析方法、装置、终端及存储介质 |
CN113220554A (zh) * | 2021-05-17 | 2021-08-06 | 北京百度网讯科技有限公司 | 检测程序代码的性能的方法和设备 |
US11106434B1 (en) * | 2020-07-31 | 2021-08-31 | EMC IP Holding Company LLC | Method, device, and computer program product for generating program code |
CN113377365A (zh) * | 2021-07-09 | 2021-09-10 | 北京字跳网络技术有限公司 | 代码显示方法、装置、设备、计算机可读存储介质及产品 |
-
2022
- 2022-01-07 CN CN202210016437.9A patent/CN114356311B/zh active Active
Patent Citations (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110067018A1 (en) * | 2009-09-15 | 2011-03-17 | International Business Machines Corporation | Compiler program, compilation method, and computer system |
CN105229617A (zh) * | 2013-05-21 | 2016-01-06 | 肯赛里克斯公司 | 用于导航应用代码的图表 |
US9274771B1 (en) * | 2014-09-22 | 2016-03-01 | Oracle International Corporation | Automated adaptive compiler optimization |
US20190303564A1 (en) * | 2018-03-30 | 2019-10-03 | Ca, Inc. | Automated code highlighting to identify risk in software programming |
US20200192789A1 (en) * | 2018-12-18 | 2020-06-18 | Sap Se | Graph based code performance analysis |
CN110618933A (zh) * | 2019-08-15 | 2019-12-27 | 华为技术有限公司 | 性能分析方法与***、电子设备与存储介质 |
CN112732538A (zh) * | 2019-10-28 | 2021-04-30 | 腾讯科技(深圳)有限公司 | 一种面板性能分析方法、装置、终端及存储介质 |
CN111104104A (zh) * | 2019-11-04 | 2020-05-05 | 珠海亿智电子科技有限公司 | 函数调用时间和统计结果可视化的方法、装置及可读介质 |
CN110941553A (zh) * | 2019-11-22 | 2020-03-31 | 山东英信计算机技术有限公司 | 一种代码检测方法、装置、设备及可读存储介质 |
CN111382044A (zh) * | 2020-02-29 | 2020-07-07 | 深圳市腾讯信息技术有限公司 | 性能瓶颈的定位方法、定位装置、电子设备及存储介质 |
US11106434B1 (en) * | 2020-07-31 | 2021-08-31 | EMC IP Holding Company LLC | Method, device, and computer program product for generating program code |
CN113220554A (zh) * | 2021-05-17 | 2021-08-06 | 北京百度网讯科技有限公司 | 检测程序代码的性能的方法和设备 |
CN113377365A (zh) * | 2021-07-09 | 2021-09-10 | 北京字跳网络技术有限公司 | 代码显示方法、装置、设备、计算机可读存储介质及产品 |
Also Published As
Publication number | Publication date |
---|---|
CN114356311B (zh) | 2024-07-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111510760B (zh) | 视频信息展示方法和装置、存储介质和电子设备 | |
WO2021135626A1 (zh) | 菜单项选择方法、装置、可读介质及电子设备 | |
US12045442B2 (en) | Method and apparatus for browsing table in document, and electronic device and storage medium | |
CN113238706B (zh) | 一种视图展示方法、装置、设备及介质 | |
US20240211683A1 (en) | Interaction method and apparatus, and electronic device | |
CN111045653B (zh) | ***生成方法、装置、计算机可读介质及电子设备 | |
CN113377365B (zh) | 代码显示方法、装置、设备、计算机可读存储介质及产品 | |
CN111596991A (zh) | 交互操作执行方法、装置和电子设备 | |
CN114363686B (zh) | 多媒体内容的发布方法、装置、设备和介质 | |
CN110069186B (zh) | 显示应用的操作界面的方法和设备 | |
CN111310086A (zh) | 一种页面跳转方法、装置和电子设备 | |
CN112579218A (zh) | 用户界面展示方法、装置、计算机可读介质及电子设备 | |
CN114356311B (zh) | 代码性能数据的交互方法、装置、介质及电子设备 | |
CN113672317B (zh) | 用于渲染题目页面的方法和装置 | |
CN114742013A (zh) | 在线文档展示方法、装置和电子设备 | |
CN114997115A (zh) | 文档处理方法、装置、设备和介质 | |
CN112214665A (zh) | 内容展示方法、装置、电子设备及计算机可读存储介质 | |
US12020347B2 (en) | Method and apparatus for text effect processing | |
CN114327188B (zh) | 表单布局方法、装置、电子设备及计算机可读介质 | |
CN115033148B (zh) | 文档的显示方法、装置、电子设备和存储介质 | |
CN117851438A (zh) | 数据分析方法、装置、可读介质及电子设备 | |
CN117435180A (zh) | 一种页面组件的添加方法及装置 | |
CN117493217A (zh) | 测试用例生成方法、装置、可读介质及电子设备 | |
CN116560648A (zh) | 一种目标对象的显示方法、装置、设备及介质 | |
CN117032674A (zh) | 数据配置方法、装置、可读介质及电子设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |