Java 如何在Unix中获取部分程序所用的时间
我正在将二进制搜索树与AVL搜索树进行比较,并希望看到在这两个树上执行搜索操作的usr/sys时间。问题是:我有一个应用程序(SearchBST.java/SearchAVL.java),它读入一个文件并填充树,然后搜索它们。我想知道我是否可以检查usr/sys时间,只检查搜索而不是整个搜索(插入和搜索)。在我看来,插入导致AVL的时间(使用“time java SearchAVL”)与BST的时间大致相同Java 如何在Unix中获取部分程序所用的时间,java,binary-search-tree,avl-tree,Java,Binary Search Tree,Avl Tree,我正在将二进制搜索树与AVL搜索树进行比较,并希望看到在这两个树上执行搜索操作的usr/sys时间。问题是:我有一个应用程序(SearchBST.java/SearchAVL.java),它读入一个文件并填充树,然后搜索它们。我想知道我是否可以检查usr/sys时间,只检查搜索而不是整个搜索(插入和搜索)。在我看来,插入导致AVL的时间(使用“time java SearchAVL”)与BST的时间大致相同 我是否应该采取不同的做法(这样填充树不会影响总体时间)?我会尽快发布一些代码,但我想看看
我是否应该采取不同的做法(这样填充树不会影响总体时间)?我会尽快发布一些代码,但我想看看是否有人在这段时间有任何想法。为什么不测量应用程序中的时间
// Read file to a temporary collection or array
// to prevent meassuring disk performance instead of tree performance
long t = System.nanoTime();
// populate tree
long tPopulate = System.nanoTime() - t;
t = System.nanoTime();
// search tree
long tSearch = System.nanoTime() - t;
System.out.println("tPopulate = " + tPopulate + " ns");
System.out.println("tSearch = " + tSearch + " ns");
这将只打印挂钟时间,但由于您的程序中没有任何
线程.sleep(…)
命令或类似命令,挂钟时间与用户时间应该不会有太大差异。这不会告诉他们用户/sys故障(尽管在树搜索中您不会期望有太多sys时间)。还可以看到,实际上我刚刚想到,只需花时间进行人口统计,然后花时间进行pop+搜索,然后计算差异。这不是一个最干净、最有趣的解决方案,但我不明白为什么它不能立即工作。不管上述情况如何,似乎“在程序中完成”可能是一种方式。谢谢(不过,我可能会使用Instant)。