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