|
1
16
另一个(补充)策略是,如果条件允许,在字符串长度降到1之前提前终止递归
|
|
2
7
一个很小的修正使我的测试速度提高了17倍 . 有额外的改进,但我想这就足够了。。。:)
|
|
|
3
4
根据@Dimitre的回答,这里有一个更完善的版本:
应该再快一点,但我还没有做基准测试。不管怎样,都要短一点。;-) |
|
|
4
3
值得一提的是,这是我目前的版本
|
|
5
1
|
|
|
6
1
我修正了这一点,以实际工作;现在,这不是一个加速! 基于@Wilfred的答案。。。
[已弃用: 我想这足以大大加快速度。我的测试显示速度加快了 2.94倍 超过@Dimitre最近的一次(平均230ms对676ms)。 web pages about javascript ,重复。在我看来,这似乎是代表的任务,操作试图优化。我很想看看其他人得到了什么结果,他们的测试数据和环境。 other processors ,就像撒克逊一样。 但是,如果我们想要100%纯xslt1.0,我认为修改这个替换模板以使其在没有exsl:节点集(),只要第2个和第3个参数作为节点集而不是RTF传入。 下面是我使用的代码,它调用replace模板。我创建搜索/替换节点集的冗长方式占用了大部分篇幅。。。可能会缩短。(但您不能进行搜索或替换节点
导入的样式表最初是 this one . 然而,正如@Frerich所指出的,这从来没有给出正确的输出! 这应该教会我不要在没有检查正确性的情况下发布绩效数据!
不管怎样,EXSLT的str:替换()被指定做比我们需要的更多的事情,所以我修改了它以便
这个简单模板的一个附带好处是,现在可以使用搜索节点的属性并替换参数。这将使
性能: 使用这个修改过的模板,这项工作只需2.5秒就可以完成,而我最近对主要竞争对手@Dimitre的xslt1.0样式表的测试只需0.68秒。所以这不是加速。但是,其他人的测试结果和我的非常不同,所以我想听听其他人对这个样式表的看法。 |
|
7
0
在@Frerich Raabe发布了一个社区wiki答案之后 我忍不住不说:
这个转换(在我的数据上)实现了1.5倍的进一步加速。所以总的加速比应该超过100倍。 |
|
|
8
0
这只是使用regexp replace()分别用“\”或“\”替换\或“或”;由另一个regexp replace()组成,用引号将任何其他可转义字符括起来。 更糟的 为什么表现比较慢?我只能猜测这是因为搜索正则表达式比搜索固定字符串慢。 使用分析字符串 根据@Alejandro的建议,这里使用的是analyze string:
虽然这似乎是一个好主意,但不幸的是,它并没有给我们带来性能上的胜利:在我的设置中,始终需要大约14秒才能完成,而上面的replace()模板需要1-1.4秒。那叫一个 |