【问题标题】:How to find a substring or a char in an array of strings in Julia如何在 Julia 的字符串数组中查找子字符串或字符
【发布时间】:2021-05-08 07:26:16
【问题描述】:

有什么比下一行代码更有效的方法来做同样的事情:

X = ["Please", "Thx", "Hello", "World"]
findfirst(k->occursin('H',k)==true,X)

所以基本上我试图找到数组 X 的第一个元素,它具有大写字母 H,所以在示例中输出为 3,但是有没有更有效的方法呢?

【问题讨论】:

  • 这是一个高效的代码。唯一的问题是您可以删除== true(但不会影响性能)。
  • 你可以使用 contains 让它看起来更好一点:findfirst(contains('H'),X)
  • 如果X 是一个常数或在运行时没有太大变化,那么您可以稍微优化一下(尤其是如果X 在实践中更大)。
  • 我猜contains 它更快,基于下面的答案,X 它可能更大,我的代码在计算中找到化学元素,所以我必须遍历 'H' 才能找到数组 X 中的不同元素(包含 ecuation)。

标签: string performance julia


【解决方案1】:

除非我在这里遗漏了一些基本的东西,否则请查看下面的时间安排:


julia> @time findfirst(k->occursin('H',k),X)
  0.015461 seconds (11.20 k allocations: 689.455 KiB, 99.63% compilation time)
3

julia> @time findfirst(contains('H'),X)
  0.000008 seconds
3

似乎contains 路由的性能明显优于occursin。

【讨论】:

  • 在同一情况下单独测试 occursin 和 contains 函数可以让我更快,我猜时间的改进来自于不必声明一个隐式函数来制作contains 工作,这是一个有趣的事实,非常感谢您的回答。
猜你喜欢
  • 1970-01-01
  • 2021-06-05
  • 2017-03-22
  • 1970-01-01
  • 2015-12-31
  • 1970-01-01
  • 2011-07-13
相关资源
最近更新 更多