zoukankan      html  css  js  c++  java
  • double在输出为字符串的几种方法效率测试

    测试结果:


    double->none 366ms
    double->long 161ms
    double->long2 188ms
    double->format 564ms
    double->Round 393ms

    代码:

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    
    namespace testStringbuilder
    {
        class Program
        {
            static void Main(string[] args)
            {
                const int count = 1000000;
    
                RunTest("double->none",()=>
                {
                    StringBuilder sb = new StringBuilder(1000*1024*32);
                    double a = 3.1415926;
                    for (int i = 0; i < count; i++)
                    {
                        sb.Append(a);
                        sb.Append(',');
                    }
                });
    
                RunTest("double->long", () =>
                {
                    StringBuilder sb = new StringBuilder(1000 * 1024 * 32);
                    double a = 3.1415926;
                    for (int i = 0; i < count; i++)
                    {
                        sb.Append((long)a);
                        sb.Append(',');
                    }
                });
    
                RunTest("double->long2", () =>
                {
                    StringBuilder sb = new StringBuilder(1000 * 1024 * 32);
                    double a = 3.1415926;
                    for (int i = 0; i < count; i++)
                    {
                        sb.Append((long)(a * 100));
                        sb.Append(',');
                    }
                });
    
                RunTest("double->format", () =>
                {
                    StringBuilder sb = new StringBuilder(1000 * 1024 * 32);
                    double a = 3.1415926;
                    for (int i = 0; i < count; i++)
                    {
                        sb.AppendFormat("{0:f3}",a);
                        sb.Append(',');
                    }
                });
    
                RunTest("double->Round", () =>
                {
                    StringBuilder sb = new StringBuilder(1000 * 1024 * 32);
                    double a = 3.1415926;
                    for (int i = 0; i < count; i++)
                    {
                        sb.Append(Math.Round(a, 3));
                        sb.Append(',');
                    }
                });
            }
    
            private static void RunTest(string key, Action action)
            {
                double milli = 0;
                for (int i = 0; i < 3; i++)
                {
                    Stopwatch watch = Stopwatch.StartNew();
    
                    try
                    {
                        action();
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex);
                    }
    
                    watch.Stop();
                    milli += watch.ElapsedMilliseconds;
                }
    
                Console.WriteLine("{0}	{1}ms", key, (long) (milli/3));
            }
        }
    }
    

      

  • 相关阅读:
    Fabric quickly
    jumpserver install
    Docker installs
    快速安装测试版Mysql
    centos7 usually use
    Mysql 通过frm&ibd 恢复数据
    GIT 常用方法
    诸葛亮-诫外甥书
    闭包函数(绑定函数)
    形参和实参
  • 原文地址:https://www.cnblogs.com/yahle/p/3476826.html
Copyright © 2011-2022 走看看