首页 > 编程语言 > 详细

go、java、netcore性能测试记录

时间:2019-12-12 21:10:50      阅读:180      评论:0      收藏:0      [点我收藏+]

测试逻辑:

循环10万次输出打印hello world 

测试平台:windows

技术分享图片

测试结果

语言占用内存包大小耗时
go 5324k 可执行文件:2172k 平均8502毫秒
java 175326k 字节码文件:2k 平均8537毫秒
dotnetcore 3612k 打包发布:65.4m 平均8371毫秒

截图介绍

  • go: 直接运行main.exe
    代码:
package main

import (
    "fmt"
    "os"
    "os/signal"
    "syscall"
    "time"
)

func main() {
    t1 := time.Now() // get current time
    //logic handlers
    for i := 0; i < 100000; i++ {
        fmt.Println("hello world")
    }
    elapsed := time.Since(t1)
    fmt.Println("App elapsed: ", elapsed)

    sig := make(chan os.Signal, 2)
    signal.Notify(sig, syscall.SIGTERM, syscall.SIGINT)
    <-sig
}

  

发布后的目录
技术分享图片


  • java: 运行编译后的字节码文件 java HelloWorld
    代码
import java.io.IOException;

public class HelloWorld {
  public static void main(final String[] args) throws IOException {

    final long time1 = System.currentTimeMillis();
    int i = 0;
    for (; i < 100000; i++) {
      System.out.println("hello world");
    }

    final long time2 = System.currentTimeMillis();
    System.out.println("当前程序耗时:" + (time2 - time1) + "ms");

    System.in.read();
  }
}

  

编译后的目录
技术分享图片


  • dotnetcore: 直接运行netcore_prj.exe
    代码
using System;
using System.Diagnostics;
using System.Threading.Tasks;
using System.Threading;

namespace netcore_prj
{
  class Program
  {
    static async Task Main(string[] args)
    {
      var watch = new Stopwatch();
      watch.Start();
      for (var i = 0; i < 100000; i++)
        Console.WriteLine("hello world");

      watch.Stop();
      Console.WriteLine($"循环100000次Say Hello World,用时:{watch.ElapsedMilliseconds}ms");

      Console.ReadLine();
    }

  }
}

  

发布后的目录
技术分享图片


测试平台:linux centos7 (10.0.1.7)

测试结果

语言虚拟内存物理内存包大小耗时
go 100M 976 2104k 平均170ms
java 4647M 33660 4k 平均335ms
dotnetcore 2712M 18988 110m 平均144ms

打包到以下的测试目录:
技术分享图片

  • go: 直接运行 nohup ./go_main &

    技术分享图片

  • java: 运行编译后的字节码文件 nohup java HelloWorld &

    技术分享图片

  • dotnetcore: 进入netcore目录运行 nohup ./netcore_prj &

    技术分享图片

  • PID:进行的标识号

  • USER:运行此进程的用户
  • PRI:进程的优先级
  • NI:进程的优先级别值,默认的为0,可以进行调整
  • VIRT:进程占用的虚拟内存值
  • RES:进程占用的物理内存值
  • SHR:进程占用的共享内存值
  • S:进程的运行状况,R表示正在运行、S表示休眠,等待唤醒、Z表示僵死状态
  • %CPU:该进程占用的CPU使用率
  • %MEM:该进程占用的物理内存和总内存的百分比
  • TIME+:该进程启动后占用的总的CPU时间
  • COMMAND:进程启动的启动命令名称

 

 

go、java、netcore性能测试记录

原文:https://www.cnblogs.com/ajdwfnhaps/p/12031226.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!