如何计算eclipse中基于Java的工具的编译时间
在我当前的项目中,我试图计算eclipse中基于Java的工具的编译时间。计算编译时间的一种方法是使用以下方法如何计算eclipse中基于Java的工具的编译时间,java,eclipse,Java,Eclipse,在我当前的项目中,我试图计算eclipse中基于Java的工具的编译时间。计算编译时间的一种方法是使用以下方法 long lStartTime = new Date().getTime(); //some tasks long lEndTime = new Date().getTime(); long difference = lEndTime - lStartTime; System.out.println("Elapsed milliseconds: " + difference); 我还
long lStartTime = new Date().getTime();
//some tasks
long lEndTime = new Date().getTime();
long difference = lEndTime - lStartTime;
System.out.println("Elapsed milliseconds: " + difference);
我还尝试了MetricEclipse插件,但它不会给出编译时间。我想使用一些eclipse插件工具或其他工具来计算编译时间。是否有任何eclipse插件/工具可用于计算编译时间???尽管您询问了使用eclipse IDE计算编译时间的方法,但评论表明您愿意接受一个无头构建解决方案,只要它有效。尽管您提到您尝试了此操作但没有成功,但由于依赖项错误,如果项目设置正确,依赖项错误不应阻止您进行构建 我编写这个脚本是为了使用Eclipse的内置编译器。我用C++代码使用它,但应该仍然使用java。假设您正在使用linux。我还没有测试它的计时方面,但是你总是可以去掉那个部分,然后用 将其另存为
headlessBuild.sh
,并使用sh headlessBuild.sh-c
或sh headlessBuild.sh-r
调用它。您还可以使用time headlessBuild.sh
调用它,以使用linux的内置命令计时器
#!/bin/sh
args=`getopt hrcs: $*`
set -- $args
if [ $? -ne 0 ]; then
echo ""
echo "Usage: headlessBuild {args}"
echo ""
echo "-c cleans and rebuilds workspace"
echo "-r rebuilds workspace without cleaning (default)"
echo ""
exit 1
fi
currDir=$(dirname "${BASH_SOURCE[0]}")
WORKSPACE_ROOT=/home/user/workspace
nbr=0
PROJ_NAME[$nbr]='ProjectName1'
PROJ_EXE[$nbr]='ProjectName1/Debug'
TARGET[$nbr]='TargetName1.so'
nbr=$(( nbr+1 ))
PROJ_NAME[$nbr]='ProjectName2'
PROJ_EXE[$nbr]='ProjectName2/Debug'
TARGET[$nbr]='TargetName2.so'
nbr=$(( nbr+1 ))
buildType="build"
for i; do
case "$i" in
-c ) buildType="cleanBuild"
shift;
;;
-r ) buildType="build"
shift;
;;
-- ) shift;
break;
;;
esac
done
echo ' '
echo 'BUILDING PROJECTS...'
echo ' '
STARTTIME=$(date +%s)
nbr=0
for proj in "${PROJ_NAME[@]}" ; do
if [ "$buildType" = "cleanBuild" ]; then
####### ensure rebuild by deleting current target, if it exists
name=$WORKSPACE_ROOT'/'"${PROJ_EXE[$nbr]}"'/'"${TARGET[$nbr]}"
if [[ -f $name ]]; then
echo ' Removing exising executable:' $name
rm $name
fi;
fi;
echo ' Building ' $proj
eclipse -nosplash -data $WORKSPACE_ROOT --launcher.suppressErrors -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import $WORKSPACE_ROOT'/'$proj -$buildType "${PROJ_EXE[$nbr]}" > "${LOGFILENAME[$nbr]}" -vmargs -Declipse.exitdata=""
done
ENDTIME=$(date +%s)
echo ' '
echo "Elapsed Time: $(($ENDTIME - $STARTTIME)) s"
尽管您询问了一种使用EclipseIDE计算编译时间的方法,但注释表明您愿意接受一种无头构建解决方案,只要它能够工作。尽管您提到您尝试了此操作但没有成功,但由于依赖项错误,如果项目设置正确,依赖项错误不应阻止您进行构建 我编写这个脚本是为了使用Eclipse的内置编译器。我用C++代码使用它,但应该仍然使用java。假设您正在使用linux。我还没有测试它的计时方面,但是你总是可以去掉那个部分,然后用 将其另存为
headlessBuild.sh
,并使用sh headlessBuild.sh-c
或sh headlessBuild.sh-r
调用它。您还可以使用time headlessBuild.sh
调用它,以使用linux的内置命令计时器
#!/bin/sh
args=`getopt hrcs: $*`
set -- $args
if [ $? -ne 0 ]; then
echo ""
echo "Usage: headlessBuild {args}"
echo ""
echo "-c cleans and rebuilds workspace"
echo "-r rebuilds workspace without cleaning (default)"
echo ""
exit 1
fi
currDir=$(dirname "${BASH_SOURCE[0]}")
WORKSPACE_ROOT=/home/user/workspace
nbr=0
PROJ_NAME[$nbr]='ProjectName1'
PROJ_EXE[$nbr]='ProjectName1/Debug'
TARGET[$nbr]='TargetName1.so'
nbr=$(( nbr+1 ))
PROJ_NAME[$nbr]='ProjectName2'
PROJ_EXE[$nbr]='ProjectName2/Debug'
TARGET[$nbr]='TargetName2.so'
nbr=$(( nbr+1 ))
buildType="build"
for i; do
case "$i" in
-c ) buildType="cleanBuild"
shift;
;;
-r ) buildType="build"
shift;
;;
-- ) shift;
break;
;;
esac
done
echo ' '
echo 'BUILDING PROJECTS...'
echo ' '
STARTTIME=$(date +%s)
nbr=0
for proj in "${PROJ_NAME[@]}" ; do
if [ "$buildType" = "cleanBuild" ]; then
####### ensure rebuild by deleting current target, if it exists
name=$WORKSPACE_ROOT'/'"${PROJ_EXE[$nbr]}"'/'"${TARGET[$nbr]}"
if [[ -f $name ]]; then
echo ' Removing exising executable:' $name
rm $name
fi;
fi;
echo ' Building ' $proj
eclipse -nosplash -data $WORKSPACE_ROOT --launcher.suppressErrors -application org.eclipse.cdt.managedbuilder.core.headlessbuild -import $WORKSPACE_ROOT'/'$proj -$buildType "${PROJ_EXE[$nbr]}" > "${LOGFILENAME[$nbr]}" -vmargs -Declipse.exitdata=""
done
ENDTIME=$(date +%s)
echo ' '
echo "Elapsed Time: $(($ENDTIME - $STARTTIME)) s"
您可以简单地使用ant来实现这一点 工作区中的新java项目(假设名称为ws-builder) .classpath项目:(我的eclipse版本是Mars,这三个jar版本在旧版本中可能有所不同,但还可以) build.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="build-workspace" name="Test">
<path id="task-classpath">
<pathelement location="bin"/>
</path>
<taskdef name="workspaceBuild" classname="task.ant.BuildWorkspaceTask" classpathref="task-classpath" />
<target name="build-workspace">
<workspaceBuild />
</target>
</project>
右键单击build.xml>运行方式>2 Ant build>(选择)JRE(选项卡)>(选择)在与工作区相同的JRE中运行>运行
就这样。当ant完成时,您将看到持续时间。您只需使用ant即可完成此操作 工作区中的新java项目(假设名称为ws-builder) .classpath项目:(我的eclipse版本是Mars,这三个jar版本在旧版本中可能有所不同,但还可以) build.xml:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="build-workspace" name="Test">
<path id="task-classpath">
<pathelement location="bin"/>
</path>
<taskdef name="workspaceBuild" classname="task.ant.BuildWorkspaceTask" classpathref="task-classpath" />
<target name="build-workspace">
<workspaceBuild />
</target>
</project>
右键单击build.xml>运行方式>2 Ant build>(选择)JRE(选项卡)>(选择)在与工作区相同的JRE中运行>运行
就这样。当ant完成时,您将看到持续时间。您是否尝试过使用bash/shell脚本启动构建并使用bash/shell函数来计时?这能满足您的需要吗?@dberm22-我试图使用命令行编译整个基于Java的工具,但由于依赖性问题,它无法编译。我需要使用EclipseIDE编译工具。您是否尝试过使用bash/shell脚本启动构建并使用bash/shell函数计时?这能满足您的需要吗?@dberm22-我试图使用命令行编译整个基于Java的工具,但由于依赖性问题,它无法编译。我需要使用EclipseIDE编译工具。@dberm22-Thanx作为指针。但我没有背景来理解你的答案。你能推荐一些工具吗??我将不胜感激。首先,您使用的是Windows、Mac还是Linux?@dberm-我使用的是Windows。此脚本用于基于Linux的版本,但我相信Windows的调用/脚本会类似。@dberm22-Thanx表示努力。@dberm22-Thanx表示指针。但我没有背景来理解你的答案。你能推荐一些工具吗??我将不胜感激。首先,您使用的是Windows、Mac还是Linux?@dberm-我使用的是Windows。此脚本用于基于Linux的版本,但我相信Windows的调用/脚本会类似。@dberm22-Thanx用于此工作。Thanx用于指针。但是我找不到org.apache.ant_1.9.4.v20150430020/lib/ant.jar、org.eclipse.core.resources_3.10.1.v201507251910.jar、org.eclipse.equinox.common_3.7.0.v20150402-1709.jar和org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8。你可以在eclipse(installed dir)/plugins下找到这三个jar(版本可能不同,但如果不同则不重要),第四个是指针的jre本身.Thanx。但是我找不到org.apache.ant_1.9.4.v20150430020/lib/ant.jar,org.eclipse.core.resources_3.10.1.v201507251910.jar,org.eclipse.equinox.common_3.7.0.v20150402-1709.jar和org.eclipse.jdt.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8。你可以在eclips下找到这三个jare(installed dir)/插件(版本可能不同,但如果不同则不重要),第四个是jre本身。
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="build-workspace" name="Test">
<path id="task-classpath">
<pathelement location="bin"/>
</path>
<taskdef name="workspaceBuild" classname="task.ant.BuildWorkspaceTask" classpathref="task-classpath" />
<target name="build-workspace">
<workspaceBuild />
</target>
</project>