go、java、netcore性能测试记录


测试逻辑:

循环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:进程启动的启动命令名称

 

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM