Chinese icon indicating copy to clipboard operation
Chinese copied to clipboard

性能上是否能优化?

Open larafing opened this issue 3 years ago • 3 comments

效率太低,特别是数字读法,我自己写的一个数字转人民币大写,耗时不到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`

larafing avatar Jul 05 '21 10:07 larafing

感谢反馈!

经测试,这个问题会在首次使用函数时出现,可能跟词库方面初始化有关。

我们会跟进处理这个问题。

以下是我的测试: image

zmjack avatar Jul 06 '21 05:07 zmjack

重新测试了一下,确实是在第一次执行时比较耗时,只要调用过一次以后就很快,大致浏览了一下代码,优化的空间还是挺大的

larafing avatar Jul 06 '21 07:07 larafing

除了耗时,我只是想转个数字,一瞬间竟然会消耗六七百兆内存,有点不太能接受……(虚拟机上直接被kill了,才发现这个问题)

发现是MIT,考虑借鉴一下另外实现一个,谢谢大佬选的协议(

yueyinqiu avatar Feb 08 '22 09:02 yueyinqiu