Chinese
Chinese copied to clipboard
性能上是否能优化?
效率太低,特别是数字读法,我自己写的一个数字转人民币大写,耗时不到1毫秒,而这个耗时1878毫秒,相差1k多倍啊;汉字拼音的转换也大致相差10倍左右。我的用法上有啥问题?
`double d = 123456789.123456; Stopwatch sw = new Stopwatch(); sw.Reset(); sw.Start();
//执行逻辑代码
var options = new ChineseNumberOptions { Simplified = true, Upper = true };
var s1 = ChineseCurrency.GetString((decimal)d, options);
sw.Stop();
var l1 = sw.ElapsedMilliseconds;
XTrace.WriteLine($"chn: {d}-->{s1} ====> {l1}");
//====================================================
sw.Reset();
sw.Start();
//执行逻辑代码
var s0 = d.ToChineseMoney();
sw.Stop();
var l0 = sw.ElapsedMilliseconds;
XTrace.WriteLine($"Com: {d}-->{s0} ====> {l0}");`
运行结果: `18:21:34.691 1 N - chn: 123456789.123456-->壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖圆壹角贰分 ====> 1878
18:21:34.693 1 N - Com: 123456789.123456-->壹亿贰仟叁佰肆拾伍万陆仟柒佰捌拾玖圆壹角贰分 ====> 1`
感谢反馈!
经测试,这个问题会在首次使用函数时出现,可能跟词库方面初始化有关。
我们会跟进处理这个问题。
以下是我的测试:
重新测试了一下,确实是在第一次执行时比较耗时,只要调用过一次以后就很快,大致浏览了一下代码,优化的空间还是挺大的
除了耗时,我只是想转个数字,一瞬间竟然会消耗六七百兆内存,有点不太能接受……(虚拟机上直接被kill了,才发现这个问题)
发现是MIT,考虑借鉴一下另外实现一个,谢谢大佬选的协议(