前段时间看了这篇文章《Ropes:理论与实践
》。这两天为了提高工作中某个系统对外接口的效率,才认真学习了一番。本质上Ropes是将字符串表示为一棵二叉树,特别适用于长字符串的处理,貌似c++ STL库中也有这么个实现。具体实现和原理还是看这篇paper
。《Ropes:理论与实践
》
一文中给出的测试数据相当惊人,Ropes比之String和StringBuffer在append,insert,delete等操作上的效率都有一
个数量级以上的差距。跑下作者给出的测试程序,其实在测试的字符串不是很长的情况下,这个差距并没有那么大,这也从侧面说明了Rope的应用范围:即只有
在大量修改大型字符串的应用程序中才能看到明显的性能提升。那么是否可以用Rope替代StringBuffer做append生成字符串(比如我要的生
成xml)。作者也说啦:
“由于 Rope
的附加性能通常比 StringBuffer
好,这时使用 rope
是否有意义呢?答案还是否。不论何时将输入的数据组合在一起形成格式化输出时,最漂亮最有效的方法是使用模板引擎(例如 StringTemplate
或 FreeMarker)。这种方法不仅能干净地将表示标记与代码分开,而且模板只进行一次编译(通常编译为 JVM
字节码),以后可以重用,从而使它们拥有极佳的性能特征。”
我用Rope for
java替代了StringBuffer做XML生成,效率提升在5%-30%左右,xml字符串不是很长,这个提升显然有限,也带来了不必要的复杂度。
因此最后还是用Velocity模板引擎来生成XML,测试的结果效率并没有多少改善,但是显然更容易维护和开发了。回到Rope的话题,我用Ruby实
现了个版本,Rubyforge上有一个Rope的实现,但是看了源码,与paper所述算法有点差异,因此照着Rope for java也实现了一个Rope4r
。
测试的结果证明在长字符串的累积操作上,Rope4r的append比之String的+=性能可以快上3倍左右,而如果采用String的<
<操作,不是immutable的,当然是最快了;比较郁闷的是slice和insert操作都比String的慢上几倍,因为Ruby的
String、Array的内建对象都是直接用c写成并做了优化的,我猜测原因在这。
分享到:
相关推荐
TRF(Tight Rope Walking)算法是一种高效且优化的字符串匹配算法,它旨在提高在大规模文本中查找特定模式的效率。这个压缩包中的内容,"TRF.rar_trf_字符串匹配",显然包含了一个实现TRF算法的程序,以及可能用于...
每个线段可以是简单的字符串,这样就可以利用字符串操作的效率,同时通过维护线段间的链接,可以对整个Rope进行高效的操作。当需要修改Rope时,只需要修改受影响的线段,而不是整个文本,从而减少了内存的消耗和操作...
这里的关键在于,通过使用展开树,库可以高效地处理字符串的切片、拼接、查找以及替换等操作。 - **索引优化**:在UTF-16编码中,由于存在代理对,索引操作可能比较复杂。`rope-utf16-splay` 库通过其内部的展开树...
SuperString SuperString是C ++的高效字符串库,可实现出色的内存和CPU优化。 SuperString使用Rope(数据结构)和优化技术。 具有快速和内存的功能-SuperString SuperString是C ++的高效字符串库,可实现出色的...
总结,"3DMAX一键绳子插件Rope"是一个高效实用的工具,它通过简便的操作和丰富的定制选项,使得在3DMAX中创建绳索效果变得轻松易行。对于那些需要频繁处理绳索模型的设计师来说,这款插件无疑是一个宝贵的资源。
网上很少有 .net 版本的的 Rope 实现,为方便自己使用,将网上的一个 java 版本 (ahmadsoft)的翻译到了 C#,服务人类。 改动了其中的字符串匹配部分,将... 只是做了简单的测试,大字符串的处理效率还行,不保证没bug
Rope Toolkit 为您的项目带来稳定、快速的绳索物理特性。...捆绑的示例场景展示了如何连接绳子来模拟起重机、绳桥、秋千和拳击场。 https://assetstore.unity.com/packages/tools/physics/rope-toolkit-154662
superstring.py使用Rope(数据结构)和优化技术。 性能实例 这两张图显示了在superstring.py和python内置字符串之间的内存消耗和执行时间方面的比较(比较程序包括将50000字节文本的所有可能子字符串追加到列表中)...
- 性能提升:新版本可能对代码分析和重构速度进行了优化,使得处理大型代码库更加高效。 - 更强的兼容性:可能增加了对最新Python版本的支持,或者修复了与某些库的兼容性问题。 - API改进:可能更新了API设计,使其...
总的来说,Rope轻量级ETL工具 v1.1.0不仅是一个功能完备的数据处理工具,也是学习和研究ETL流程、数据处理技术的理想平台。无论是学生进行毕业设计,还是专业开发者解决实际问题,都能从中受益。通过深入源码,我们...
unity用于制作绳索的插件Rope unity用于制作绳索的插件Rope unity用于制作绳索的插件Rope unity用于制作绳索的插件Rope
The Ultimate Rope Editor is a powerful tool that can generate procedural ropes and also apply rope physics to your already existing meshes. Physics and parameters can be tweaked in play mode for real ...
1. **物理模拟**:Obi采用高效的物理引擎来模拟绳索的行为,考虑了张力、弯曲、剪切和摩擦等因素,使得绳索动态表现更加自然。 2. **真实感渲染**:通过使用高质量的着色器和光照模型,Obi能够产生非常逼真的绳索...
总的来说,Ultimate Rope Editor 1.18是一款为Unity开发者量身打造的专业绳索制作工具,它的强大功能和易用性使得绳索模拟不再成为开发难题。无论你是新手还是经验丰富的开发者,这款插件都能帮助你在游戏世界中创造...
Unity 绳索插件 Obi Rope
- 使用样条线进行非线性、非破坏性的绳索编辑。在编辑绳索时,实时获得关于绳索效果的反馈! - 使用样条进行过程化平滑网格生成,同时附带切线空间更新和法线贴图支持。无需为绳索手动生成几何逻辑。 - 自适应基于...
使用 Obi Rope,你可以在几秒内创建绳索和杆子,同时完全控制它们的形状和行为:导向粒子技术可以对杆子使用不同的扭转/扭曲特效。绳索更加轻量化,并且能裁剪/调整尺寸。两者都可以与环境发生碰撞以及相互碰撞,也...
总的来说,Obi Rope 5.3是Unity开发者实现绳索物理模拟的得力助手,无论是在游戏制作还是交互式体验设计中,它都能帮助你创造出更生动、更真实的绳索效果,提升作品的整体质量。如果你的项目需要绳索元素,那么Obi ...
unity绳子插件 rope Ultimate Rope Editor v1.18 亲测好用
这个名为“Rope_examples”的项目提供了一系列实例,展示了如何利用Rope库来处理草图(sketches),特别是在SketchProcessing框架下。SketchProcessing是基于Processing语言的一个扩展,用于创建交互式图形和视觉...