java 运行.os文件_一次Java调用OS命令的优化过程实录

本文记录了一次通过Java调用OS命令执行人脸识别服务的优化过程。初始耗时1617s,经过内存调整、命令行参数优化、Runtime方法优化等措施,最终降至239s,提升了运行效率。优化包括:加大Java VM内存无效,命令行参数`cmd /c start`有效,优化Runtime方法降低CPU占用,增加CPU核心数显著缩短执行时间。
摘要由CSDN通过智能技术生成

人脸识别(FaceRecognition)服务运行在Windows系统的bat文件中,其计算量非常大,运行耗时也比较长(10-20小时),并且在Java程序中使用Runtime执行命令,比直接运行cmd命令耗时更多,因此必须采取必要的手段对整个Server进行优化。

主要优化目标是降低Java程序中的执行时间,以提高吞吐率。Server类型虚拟机

CPU1核,Intel(R) Xeon(R) CPU   E5603 @ 1.60GHz

内存3GB操作系统Windows XP Pro Version 2002 SP3

Tomcatapache-tomcat-7.0.47-windows-x86

JDKjdk1.7.0_04

下面,搭建模拟环境,分析潜在的优化点。

1.3.1加大Java VM内存

加内存,catalina.bat中加上Java VM参数:set JAVA_OPTS=-Xms1024m  -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256m

下面是Tomcat添加JVM参数之后的对比结果(测试ffmpeg命令):默认内存(64M)85 s

加大内存(1024M)85 s

可见,优化内存,基本无效。

仍然采用上面的测试例子,不同方法的执行时间对比如下:命令行中直接执行bat文件69s

使用RunTime,不加cmd /c start104s

使用RunTime,加cmd /c start,内存为64M85s

使用RunTime,加cmd /c start,内存加大到512M85s

使用processBuilder,不加cmd /c start88s

使用processBuilder,加cmd /c start87s

使用processBuilder,加cmd /c87s

优化后,运行时间提升幅度为(104-85)/104*100%=18.27%。直接执行,输出信息80s

直接执行,不输出信息72s

优化后,运行时间提升幅度为(80-72)/80*100%=10%。1核2.4GHz292s

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值