什么更有效:从java或shell脚本读入文件?

时间:2010-03-04 11:18:34

标签: java shell

我正在试图找出服务器负载方面效率更高的东西,目前相当大,额外的过载不是一个好主意。这是我需要做的:

我有一个更改的日志文件,有时每隔几分钟左右每隔一次更改一次,这与此问题无关。我试图找出用cron作业启动java文件是否更有效,或者编写将由cron执行的shell脚本,这都是在linux下。哪个更好?

5 个答案:

答案 0 :(得分:4)

检查日志文件主要是I / O,因此这两种情况下的实际CPU时间都是可以忽略不计的。所以重要的是启动时间,在Linux中生成一个shell脚本比启动JVM要快得多。

答案 1 :(得分:1)

正如彼得所说,这取决于该计划应该做什么。

通常,与shell脚本相比,启动Java程序会产生相当大的开销。但是,如果必须完成一些复杂的操作,那么java可能是你最好的选择。

我个人会选择Python作为shell不适合的脚本以及Java可能过度杀伤的脚本:)

请注意,系统管理员通常可以很好地阅读和理解shell脚本,但Java是另一回事。这可能是个问题,也可能不是。

答案 2 :(得分:0)

一般来说,Perl被认为是文本解析的最佳选择,但由于您需要做的就是将更改打印到控制台,您应该只执行tail -f而不是cron作业等。

答案 3 :(得分:0)

* nix中有许多工具可以有效地解析文件。例如grep,tail。这些工具在C中编码,具有非常有效的解析文件的算法。绝对是这些shell工具。请不要Java。首先,启动它很慢。你无法将它与运行像grep这样的C程序进行比较。其次,如果出现任何问题,你会发现麻烦(在编译方面)麻烦你的脚本。

答案 4 :(得分:0)

如果你必须为n行日志文件生成n ^ 2个进程,你必须优化甚至超过bash。如果你想只产生一个罪恶的过程,那么语言就没有区别了,imho。

我宁愿查看哪种语言的I / O和文本处理更能满足您的需求。如果Java中的简单文本处理在“服务器”上太多,那么在汇编中执行相同的操作也会太多。