Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.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运行速度比c++;在;是否从已排序列表中删除重复项;? 这是一个来自LeEcDebug的问题。程序很简单。但是我很困惑为什么java运行的速度比C++具有相同的逻辑速度快? Java代码: public ListNode deleteDuplicates(ListNode head) { if (head == null || head.next == null) return head; ListNode runner = head; while (runner.next != null) { if (runner.val == runner.next.val) { // duplicate values, make the next as next.next runner.next = runner.next.next; } else { // otherwise, advance runner to runner.next runner = runner.next; } } return head; }_Java_C++_Performance - Fatal编程技术网

为什么Java运行速度比c++;在;是否从已排序列表中删除重复项;? 这是一个来自LeEcDebug的问题。程序很简单。但是我很困惑为什么java运行的速度比C++具有相同的逻辑速度快? Java代码: public ListNode deleteDuplicates(ListNode head) { if (head == null || head.next == null) return head; ListNode runner = head; while (runner.next != null) { if (runner.val == runner.next.val) { // duplicate values, make the next as next.next runner.next = runner.next.next; } else { // otherwise, advance runner to runner.next runner = runner.next; } } return head; }

为什么Java运行速度比c++;在;是否从已排序列表中删除重复项;? 这是一个来自LeEcDebug的问题。程序很简单。但是我很困惑为什么java运行的速度比C++具有相同的逻辑速度快? Java代码: public ListNode deleteDuplicates(ListNode head) { if (head == null || head.next == null) return head; ListNode runner = head; while (runner.next != null) { if (runner.val == runner.next.val) { // duplicate values, make the next as next.next runner.next = runner.next.next; } else { // otherwise, advance runner to runner.next runner = runner.next; } } return head; },java,c++,performance,Java,C++,Performance,C++代码: ListNode* deleteDuplicates(ListNode* head) { if(head == NULL || head->next == NULL){ return head; } ListNode* index = head; while(index->next != NULL){ if(index->val == index->next->val){

C++代码:

ListNode* deleteDuplicates(ListNode* head) {
    if(head == NULL || head->next == NULL){
        return head;
    }
    ListNode* index = head;

    while(index->next != NULL){
        if(index->val == index->next->val){
            index->next = index->next->next;
        }else{
            index = index->next;
        }
    }
    return head;
}
Java成本为1ms:


C++需要12毫秒:

我不相信一个基准测试运行不到几秒钟

注意:java的动态编译器通常比C++更能去除死代码即未使用的代码。我会确保你的测试是真正的工作,而不仅仅是被丢弃


简而言之,Java对于没有任何用处的基准测试通常更快。

LeetCode似乎对每种语言的算法执行时间进行了不同的测量,例如。

val的类型是什么?在java中,你只需复制一个引用,以引用代码> Val< /Cord>。C++中,你复制整个对象。这可能是运行时差异的关键。我们不知道使用了什么编译器,是否使用了优化,实际代码是什么(只有片段),没有测试数据,什么都没有。我们只有一个名为“leetcode”的链接和它们的声明。你确定
runner.val==runner.next.val
真的能满足你在Java中的期望吗?它比较的是引用,而不是它们的值。val只是int。很抱歉,我无法获得Leetcode的测试用例和编译器细节。如果看不到这些基准的推导方式,很难将其赋予意义。(不,注册leetcode不是为了查看代码)