【问题标题】:Performance of string operations in DyalogDyalog 中字符串操作的性能
【发布时间】:2014-08-06 12:32:26
【问题描述】:

我有 2 个与比较 Dyalog APL 中的字符向量有关的问题。 以下代码将逐一比较字符向量:

a←'ATCG'
b←'GTCA'
a=b
  • 为了加快速度(在 2 个向量的情况下,以及在将多个向量与单个向量进行比较的情况下),我应该将字符向量转换为数字向量还是不会在 APL 中很重要(类似于在 C 中比较字符)?
  • 我正在比较 DNA 序列(可能只包含ATCG 字母表中的字母)。我可以做些什么来加快对此类向量的各种操作?

【问题讨论】:

  • 不,没关系,因为在一天结束时,字符以某种数字方式编码,并且比较将是数字比较。我不确定小字母表是否有任何优势。但是,如果您不关心两个字符串“如何”不匹配/匹配,而是关心它们是否相同,我建议使用匹配运算符,如果相等则返回 1,否则返回 0(我猜它会返回找到一个差异后迅速)

标签: vector comparison apl dyalog


【解决方案1】:

有趣的是,在我的(旧)版本的 Dyalog APL 上,将字符转换为小整数实际上运行速度快了 25%。这可能在最近的版本中得到了加速。

试试

a <- []av iota 'ATCG'   // sorry, no apl characters
b <- []av iota 'GTCA'
a = b

确保最大值小于 128。

要检查您是否具有最小可能的整数表示,请使用 []dr 函数。 []dr a 应该为整数 -128

Dyalog APL 将自动转换为可能的最小整数宽度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-11-09
    • 1970-01-01
    • 2012-04-25
    • 2016-11-23
    • 2020-05-24
    • 1970-01-01
    • 1970-01-01
    • 2019-04-03
    相关资源
    最近更新 更多