Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Unix中获取部分程序所用的时间_Java_Binary Search Tree_Avl Tree - Fatal编程技术网

Java 如何在Unix中获取部分程序所用的时间

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的时间大致相同 我是否应该采取不同的做法(这样填充树不会影响总体时间)?我会尽快发布一些代码,但我想看看

我正在将二进制搜索树与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)。