mono支持dotnet core了
mono支持.netcore了
mono 4.8终于发正式版本了,新版本开始支持.net core了. 2. 不直接安装,通过MSIExtractor.exe解压提取的方式
3. 手动添加到系统环境Path变量中: F:\softwares\mono-4.8.0.495-x64-0\Mono\bin
测试并运行mono
mono -V

分别用.net core和mono对比一下性能
先上图

测试代码
ConsoleApp代码
using System;
using System.Text;
namespace ConsoleApp
{
public class Program
{
//虽然.net core支持条件编译,但是无法区分是个环境运行
//目前只能通过Mono.Runtime判断是否那个环境运行的
public static bool isMono = Type.GetType("Mono.Runtime") != null;
public static void Main(string[] args)
{
//.net core 输出中文,不指定环境的,会乱码
if (!isMono)
{
Console.OutputEncoding = Encoding.UTF8;
}
StringConcat.test();
Console.ReadKey();
}
}
}
StringConcat 测试工具类(宇内流云大哥做测试用的)
using System;
using System.Text;
namespace ConsoleApp
{
class StringConcat
{
static long t = 0;
static void TimeReset()
{
t = DateTime.Now.Ticks;
}
static long TT
{
get
{
return (DateTime.Now.Ticks - t) / 10000;
}
}
public static void test()
{
string s1 = "sfdsfwefjwklefjlskdjflks2jgwdj;gkjr;ejdf;krej;gdkj;3rejg;kj2;ewkjf;kewj;fjwe;lkfj;wef";
string s2 = "wfoiewhfw;eifodserg;erjg;ejg;kkjergjk;elrgjp3klerrkg;jergjlerjgjerlgj;;erg";
string s3 = "l2efwhdslkfhwlrekg'3rgerljg;3ejgegrldmg'34e';g;rjemgm;3l,egl;kg'3';l4egm;dlmglermgemd;gmer';lgel;mgermg;f";
const int c = 10000000;
TimeReset();
for (var i = 0; i < c; i++)
{
test1(s1, s2, s3);
}
Console.WriteLine("->字串加法用时:{0}ms", TT);
TimeReset();
for (var i = 0; i < c; i++)
{
test2(s1, s2, s3);
}
Console.WriteLine("->Format函数用时:{0}ms", TT);
TimeReset();
for (var i = 0; i < c; i++)
{
test3(s1, s2, s3);
}
Console.WriteLine("->StringBuilder用时:{0}ms", TT);
TimeReset();
for (var i = 0; i < c; i++)
{
test4(s1, s2, s3);
}
Console.WriteLine("->内存操作用时:{0}ms", TT);
TimeReset();
for (var i = 0; i < c; i++)
{
test5(s1, s2, s3);
}
Console.WriteLine("->string.Concat用时:{0}ms", TT);
}
static void test1(string s1, string s2, string s3)
{
var x = s1 + s2 + s3;
var b = Encoding.ASCII.GetBytes(x);
}
static void test2(string s1, string s2, string s3)
{
var x = string.Format("{0}{1}{2}", s1, s2, s3);
var b = Encoding.ASCII.GetBytes(x);
}
static void test3(string s1, string s2, string s3)
{
var sb = new StringBuilder();
sb.Append(s1);
sb.Append(s2);
sb.Append(s3);
var x = sb.ToString();
var b = Encoding.ASCII.GetBytes(x);
}
static void test4(string s1, string s2, string s3)
{
var b1 = Encoding.ASCII.GetBytes(s1);
var b2 = Encoding.ASCII.GetBytes(s2);
var b3 = Encoding.ASCII.GetBytes(s3);
var x = new byte[b1.Length + b2.Length + b3.Length];
Buffer.BlockCopy(b1, 0, x, 0, b1.Length);
Buffer.BlockCopy(b2, 0, x, b1.Length, b2.Length);
Buffer.BlockCopy(b3, 0, x, b1.Length + b2.Length, b3.Length);
}
static void test5(string s1, string s2, string s3)
{
var x = string.Concat(s1, s2, s3);
var b = Encoding.ASCII.GetBytes(x);
}
}
}
秋风
2017-02-27