微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Squeak 中实现 ZXing 的 Reed Solomon 纠错很慢

如何解决在 Squeak 中实现 ZXing 的 Reed Solomon 纠错很慢

最终完成(主要是)我的 Reed Solomon 实施后,我感觉多巴胺很高。我的解码工作正常,dataMatrix256 和 QRCode,包括损坏修复,在 t/2 错误内。它非常慢,使用起来很慢。为解码端的热点编写插件可能会有加速:GFpolyevaluateAt (40.1%)、Decoder runEuclideanAlgorithm(38.5%)、Decoder findErrorLocations(12.6%) 和 Decoder find ErrorMagnitudes(2.3%)。

它是用 Squeak 编写的,这是我一直以来最喜欢的语言环境。我已经使用它超过 20 年了。它是如此美丽!开发规则是#GetItWorking、#GetItWorkingRight #GetItWorkingFast。

如果您有兴趣查看代码,请转到 http://squeak.org获取 squeak。运行后,右键单击 World Menu,然后选择 open...Monticello browser。添加类型为 HTTP 的新存储库并进入加密存储库。

MCHttpRepository
    location: 'https://www.squeaksource.com/Cryptography'
    user: 'squeak'
    password: 'squeak'

打开一个工作区(世界菜单 -> 工作区)并运行此代码(粘贴到工作区,选择它并右键单击执行它。):

Installer ss
    project: 'Cryptography';
    install: 'ProCrypto-1-1-1';
    install: 'ProCryptoTests-1-1-1'.

现在您可以打开浏览器查看代码(类别:CryptographyRSFEC 和 CryptographyRSFECTests)或打开 TestRunner 进行测试(世界菜单 -> *)。


加速工作:我将 OrderedCollection 使用转换为 Array 使用以改进 #at:查找和#at:put:设置调用代码发布到密码学。 OrderedCollection 已经从分析中脱落。插入 支持是下一个

**Leaves**
16.5% {22153ms} RSFECGenericGF>>exp:
9.6% {12888ms} RSFECGenericGF>>maskValue:
9.1% {12205ms} RSFECGenericGF>>addOrSubtract:by:
7.1% {9561ms} RSFECGenericGF>>log:
6.5% {8694ms} RSFECGenericGF>>normalizeIndex:
4.7% {6299ms} RSFECGenericGF>>multiply:by:
2.6% {3512ms} RSFECGenericGFpoly>>evaluateAt:
1.3% {1780ms} RSFECGenericGFpoly>>addOrSubtractpoly:
1.3% {1682ms} RSFECGenericGFpoly>>multiplyByMonomialDegree:coefficient:

6.0% {8097ms} RSErasuregalois>>normalizeIndex:
1.7% {2336ms} RSErasuregalois>>maskValue:
1.6% {2140ms} RSErasuregalois>>tableMultiply:by:
1.5% {2040ms} RSErasuregalois>>add:by:
1.3% {1797ms} RSErasuregaloisTest(TestCase)>>assert:description:
1.2% {1669ms} RSErasuregalois>>galoisMultiply:by:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。