Dyalog 中字符串操作的性能
Posted
技术标签:
【中文标题】Dyalog 中字符串操作的性能【英文标题】:Performance of string operations in Dyalog 【发布时间】:2014-08-06 12:32:26 【问题描述】:我有 2 个与比较 Dyalog APL 中的字符向量有关的问题。 以下代码将逐一比较字符向量:
a←'ATCG'
b←'GTCA'
a=b
为了加快速度(在 2 个向量的情况下,以及在将多个向量与单个向量进行比较的情况下),我应该将字符向量转换为数字向量还是不会在 APL 中很重要(类似于在 C 中比较字符)?
我正在比较 DNA 序列(可能只包含ATCG
字母表中的字母)。我可以做些什么来加快对此类向量的各种操作?
【问题讨论】:
不,没关系,因为在一天结束时,字符以某种数字方式编码,并且比较将是数字比较。我不确定小字母表是否有任何优势。但是,如果您不关心两个字符串“如何”不匹配/匹配,而是关心它们是否相同,我建议使用匹配运算符,如果相等则返回 1,否则返回 0(我猜它会返回找到一个差异后迅速) 【参考方案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 将自动转换为可能的最小整数宽度。
【讨论】:
以上是关于Dyalog 中字符串操作的性能的主要内容,如果未能解决你的问题,请参考以下文章