相关疑难解决方法(0)

java.time.ZonedDateTime与java.util.Calendar性能检查

我试图获取月份价值。但我想检查java.util或java.time中哪个更好,以检索月份值。这是我的代码,用于检查Calender vs ZonedDateTime的性能。

    //import java.time.Instant;
    //import java.time.ZonedDateTime;
    //import java.util.Calendar;

    Instant instant, instant2; 
    String diff;

    instant = Instant.now();
    int month2 = Calendar.getInstance().get(Calendar.MONTH) + 1;
    instant2 = Instant.now();
    diff = String.valueOf(instant2.getNano() - instant.getNano());
    System.out.println("month value " + month2 + "at: " + diff);

    instant = Instant.now();
    int month1 = ZonedDateTime.now().getMonth().getValue();
    instant2 = Instant.now();
    diff = String.valueOf(instant2.getNano() - instant.getNano());
    System.out.println("month value " + month1 + "at: " + diff);
Run Code Online (Sandbox Code Playgroud)

我认为java.time比java.util更好。因此,我期望ZonedDateTime比日历更好。但是在这里我发现了相反的情况。我的结果是:

month value 6at: 0  //Calendar
month value 6at: 9000000 //ZonedDateTime
Run Code Online (Sandbox Code Playgroud)

任何想法为什么会这样。以及为什么我应该使用java.util.Calender而不是java.timeZonedDateTime的任何建议。

PS我什至把在month1之后的month2取回为:

    Instant …
Run Code Online (Sandbox Code Playgroud)

java performance date java.util.calendar zoneddatetime

-1
推荐指数
1
解决办法
98
查看次数

迭代 List 并显示每个对象的一个​​字段的值的最有效方法是什么?

OrderDTO在列表中有很多对象。

包含 2 个项目的示例:

final List<OrderDTO> orderList = new ArrayList<OrderDTO>();

final List<OrderDTO> orderList = new ArrayList<OrderDTO>();
final OrderDTO order1 = new OrderDTO("1", "100");
final OrderDTO order2 = new OrderDTO("2", "200");
orderList.add(order1);
orderList.add(order2);
Run Code Online (Sandbox Code Playgroud)

OrderDTO有字段,例如orderIdstateId

我想在日志中显示:

"1", "2" 
Run Code Online (Sandbox Code Playgroud)

或者

"100", "200"
Run Code Online (Sandbox Code Playgroud)

在 Java 11 中,迭代列表并显示每个对象的一个​​字段的值的最有效方法是什么?

java foreach java-stream java-11

-1
推荐指数
1
解决办法
82
查看次数

Java 8中的legacy for循环,流和parallelStream之间的比较

import java.util.ArrayList;
import java.util.List;

public class IterationBenchmark {

    public static void main(String args[]){
        List<String> persons = new ArrayList<String>();
        persons.add("AAA");
        persons.add("BBB");
        persons.add("CCC");
        persons.add("DDD");
        long timeMillis = System.currentTimeMillis();
        for(String person : persons)
            System.out.println(person);
        System.out.println("Time taken for legacy for loop : "+
                  (System.currentTimeMillis() - timeMillis));
        timeMillis = System.currentTimeMillis();
        persons.stream().forEach(System.out::println);
        System.out.println("Time taken for sequence stream : "+
                  (System.currentTimeMillis() - timeMillis));
        timeMillis = System.currentTimeMillis();
        persons.parallelStream().forEach(System.out::println);
        System.out.println("Time taken for parallel stream : "+
                  (System.currentTimeMillis() - timeMillis));

    }
}
Run Code Online (Sandbox Code Playgroud)

输出:

AAA
BBB
CCC
DDD
Time taken for …
Run Code Online (Sandbox Code Playgroud)

java performance for-loop java-8 java-stream

-2
推荐指数
1
解决办法
728
查看次数

为什么有些用 Golang 编写的函数比 Java 运行得还要慢?

我已经用 Golang 和 Java 测试了几个简单的函数。令我惊讶的是,Java 有时比 Golang 更快?尤其是在递归函数和标准库中的某些函数(例如 math/rand.Rand?)方面。我想知道为什么。这是我用于测试和结果的一些代码。

高朗代码:

package main

import (
    "fmt"
    "math/rand"
    "time"
)

func calPi(pointCount int) float64 {
    inCircleCount := 0

    var x, y float64
    var Pi float64

    for i := 0; i < pointCount; i++ {
        x = rand.Float64()
        y = rand.Float64()

        if x*x+y*y < 1 {
            inCircleCount++
        }
    }

    Pi = (4.0 * float64(inCircleCount)) / float64(pointCount)

    return Pi
}

func fibonacci(c int64) int64 {
    if c < 2 {
        return c
    }

    return …
Run Code Online (Sandbox Code Playgroud)

java performance go

-2
推荐指数
1
解决办法
987
查看次数

为什么Java程序的执行要比C中的相同程序花费更多的时间?

因此,我有2个程序执行相同的操作,一个用C编写,另一个用Java编写。它们都创建50个线程,并等待所有线程完成,然后终止。

为了了解两个程序之间的时间差,我在Linux中使用了“ time”命令来获取执行时间。

对于C程序,总执行时间为0.020秒,而Java版本花费了0.663秒来完成。

我曾尝试寻找答案,但发现的所有文章(如 两篇文章)都说Java实际上比C快,我认为这是胡说八道,因此,如果有人可以为我澄清一下,我将不胜感激。 。

谢谢。

这就是C代码的样子。

#include<stdio.h>
#include<pthread.h>
#include<unistd.h>
#define N 50

void* tproc(void *arg) {
    printf("Thread %d\n", *((int *) arg));
    return NULL;
}

int main(int argc, char * argv[]) {
    int i;
    int targ[N];
    pthread_t tid[N];
    for(i = 0; i < N; i++) {
    targ[i] = i;
        if(pthread_create(&(tid[i]), NULL, &tproc, &targ[i]) != 0) {
            printf("Can't create thread %d\n", i);
            return 1;
        }
    }
    for(i = 0; i < N; i++) {
        if(pthread_join(tid[i], NULL) != …
Run Code Online (Sandbox Code Playgroud)

c java

-2
推荐指数
1
解决办法
138
查看次数

java方法:java.lang.Integer.numberOfLeadingZeros(int)可以进行优化

原始代码是:

public static int numberOfLeadingZeros(int i) {
    // HD, Figure 5-6
    if (i == 0)
        return 32;
    int n = 1;
    if (i >>> 16 == 0) { n += 16; i <<= 16; }
    if (i >>> 24 == 0) { n +=  8; i <<=  8; }
    if (i >>> 28 == 0) { n +=  4; i <<=  4; }
    if (i >>> 30 == 0) { n +=  2; i <<=  2; }
    n -= i …
Run Code Online (Sandbox Code Playgroud)

java openjdk jvm jvm-hotspot

-3
推荐指数
1
解决办法
303
查看次数

Java8 vs Go执行速度

我正在学习Go,在此之前我一直在使用Java8。我编写了两个程序来比较Java8和Go之间的执行速度。

Java程序运行了604秒,Go运行了2334.598334749秒。有人可以帮我理解为什么Go程序即使据说运行速度更快也运行缓慢。

?  ~ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
?  ~ go version
go version go1.12.4 darwin/amd64
Run Code Online (Sandbox Code Playgroud)
?  ~ java -version
java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.91-b14, mixed mode)
?  ~ go version
go version go1.12.4 darwin/amd64
Run Code Online (Sandbox Code Playgroud)
//Java
public class Solution {

  public static void main(String[] args) {

    long start = System.currentTimeMillis();
    for (int i …
Run Code Online (Sandbox Code Playgroud)

java go

-3
推荐指数
1
解决办法
106
查看次数

与 list.stream() 相比,为什么 list.parallelStream() 的性能要差得多?

我使用时的性能list.parallelStream()比使用时差得多list.stream()。您认为为什么会发生这种情况?顺便说一句,这是Java 17,我的CPU 是桌面级的 i5。

import java.text.SimpleDateFormat;
import java.time.LocalDate;
import java.time.Period;
import java.time.chrono.ChronoPeriod;
import java.time.chrono.HijrahChronology;
import java.time.chrono.HijrahDate;
import java.time.chrono.IsoChronology;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoUnit;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Locale;
import java.util.Random;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class App {
    public static void main(String[] args) throws Exception {
        int size = 1;
        List<Integer> list = null;
        long startTimeN;
        long endTimeN;
        long startTimeP;
        long endTimeP;
        long normalStreamCheckedSize;
        long normalStreamTime;
        long parallelStreamCheckedSize;
        long parallelStreamTime; …
Run Code Online (Sandbox Code Playgroud)

java parallel-processing concurrency java-stream java-17

-4
推荐指数
1
解决办法
357
查看次数

以下哪项是java中最快的数据类型?

在java数据类型(byte,short,int,float,double,boolean)中,这是编译和计算的最快数据类型以及为什么?请清楚地列出原因

java

-6
推荐指数
1
解决办法
1378
查看次数