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));
            }
        }
    }
    

      

  • 相关阅读:
    Struts框架之结果页面的跳转
    eclipse中运行tomcat提示端口被占的4种解决方案
    在Struts2框架中使用Servlet的API
    Struts2框架之Action类的访问
    判断有无网
    UITextField银行卡加空格
    关于UI_USER_INTERFACE_IDIOM() & UIDevice.model
    OC导航栏跳转指定界面
    oc UIAlertController封装
    升级到macSierra 10.12之后 在模拟器上面滑动视图很卡,
  • 原文地址:https://www.cnblogs.com/yahle/p/3476826.html
Copyright © 2011-2022 走看看