首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Unix-shell中调用Maple而不覆盖shell时间

在Unix-shell中调用Maple而不覆盖shell时间
EN

Stack Overflow用户
提问于 2013-05-01 02:33:45
回答 1查看 112关注 0票数 0

我有一个问题:我想使用UNIX-time命令对一些计算进行计时,我发现在Ubuntu 12.04 LTS (以及我测试的其他一些机器,包括Mac)上的Maple (我使用版本16)具有一些奇怪的属性。

呼叫

代码语言:javascript
复制
time maple < testCalc.txt

其中testCalc.txt包含以下代码:

代码语言:javascript
复制
with(DETools):
DFactor(mult(x^5*d^5 + 6*x*d +1,x^5*d^5 + x^2*d^2 +7,[d,x]),[d,x]);

将产生以下输出:

代码语言:javascript
复制
memory used=65.5MB, alloc=72.9MB, time=0.69
memory used=199.6MB, alloc=149.9MB, time=1.84
memory used=312.4MB, alloc=149.9MB, time=2.97
memory used=592.3MB, alloc=312.4MB, time=5.63
memory used=854.7MB, alloc=312.4MB, time=9.80
["The Result (long)"]
memory used=1132.9MB, alloc=312.4MB, time=13.06

但是额外的三行“时间”说

代码语言:javascript
复制
real         0m47.872s
user         0m0.016s
sys          0m0.000s

显然,用户和sys的时间是错误的,因为maple根据自己的时间测量花费了13秒。

在我看来,maple使用与time命令相同的源,并在每次使用它时重置计时器,因此unix-time命令只捕获自maple最后一次调用该源以来的时间。

这非常不方便,我想“禁止”maple这样做。有人知道怎么做吗?有没有一些调用maple的标志,让maple不自己测量时间戳?

提前感谢您的回复。

阿尔伯特

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-05-01 05:59:38

丑陋的黑客来了。

正如我在评论中所说,问题是Maple正在启动一个子进程来完成所有的计算。因此,我在bin中创建了一个名为"mserver“的shell脚本,如下所示

代码语言:javascript
复制
#!/bin/sh
/usr/bin/time "REPLACE WITH PATH TO MSERVER ON YOUR MACHINE/mserver" $* 2> log

然后,我将Maple调用为

代码语言:javascript
复制
maple --kernel-binary=/Users/me/bin/mserver

在运行结束时,文件日志包含计算的正确“时间”输出。

编辑:我应该指出,如果Maple协议使用stderr做任何事情,那么这最终会导致Maple崩溃。我还没有看到它的任何迹象,但我现在才刚刚玩过。

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

https://stackoverflow.com/questions/16306696

复制
相关文章

相似问题

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