首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Linux中代码判断参数的确定

Linux中代码判断参数的确定
EN

Stack Overflow用户
提问于 2013-05-08 14:02:29
回答 2查看 55关注 0票数 0

我正在开发一个c/c++/java代码的在线代码判断软件。

我想包括判断代码的各种参数,即编译时间、执行时间、内存使用情况,就像IDEONE API提供的一样。

在LINUX环境下编译/执行代码时,如何提取这些参数?有没有什么特别的命令?

还有其他可以用来判断代码的参数吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-08 14:38:05

判断动词在你的问题中有点奇怪(可能太不精确了)。也许你的意思是评估?

假设被评估的源代码是由最近的GCC编译器(即,GCC的4.7或4.8版)编译的,并且您可以参数化(或只是重复)它的编译,您可以考虑出于评估或度量目的而扩展和定制GCC编译器。这既可以直接通过GCC插件(痛苦地用C或C++编写),也可以通过MELT扩展(MELT是一种特定于领域的语言,用于扩展和自定义GCC)。

要走这条路,您需要做一些工作,因为您需要深入了解GCC的内部结构。MELT probe可能会帮助您更多地理解Gimple表示(在GCC内部)。您还可以尝试使用gcc -fdump-tree-all编译一些示例代码,这会生成许多转储文件。

所以这个想法是你需要时间(几天,也许几周)来开发一个熔融扩展(例如,在一些文件shiven.melt中),用于分析,度量和评估目的,并且你将重新编译example.c源代码,例如

代码语言:javascript
复制
gcc -fplugin=melt \
  -fplugin-arg-melt-extra=shiven \
  -fplugin-arg-melt-mode=shivenanalysis \
  -c example.c

(当然,您还需要添加其他编译器标志,例如-O -I/some/include/dir/ ...)

然后,你可以做一个MELT扩展来测量编译代码的一些特征,比如函数的数量,基本块的数量,Gimple指令的数量等等。这将在编译时发生。你的MELT扩展(在你的文件shiven.melt中)可以例如在一些数据库中写一些统计数据。

扩展GCC对于C,C++,Fortran,Ada....源代码,但对Java的支持要少得多(因为即使gcj存在,也没有人使用GCC来编译Java,而且因为gcj可能支持一些旧的Java标准的子集)。

请订阅gcc-melt@googlegroups列表,并在那里询问与熔化相关的问题。明确地提到你对订阅的兴趣(可能是你的问题)。

票数 1
EN

Stack Overflow用户

发布于 2013-05-08 14:20:23

有一个time命令可以给出一个二进制文件的执行时间。这样,您就可以获得编译时间time gcc code.c或执行时间time ./a.out。对于内存使用,您可以使用valgrindps。对于ps,如果您使用stdin作为输入,那么它应该很简单。只需启动应用程序,在后台以一定的时间间隔运行ps,并将输入提供给应用程序。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16433700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档