3

Dyalog APL での文字ベクトルの比較に関して 2 つの質問があります。次のコードは、文字ベクトルを 1 つずつ比較します。

a←'ATCG'
b←'GTCA'
a=b
  • 高速化するために ( 2 つのベクトルの場合、および多くのベクトルを単一のベクトルと比較する場合と同様に)、文字ベクトルを数値ベクトルに変換する必要がありますか、APL では問題になりません ( C)?
  • 私は DNA 配列を比較しています (ATCGアルファベットのみで構成されている可能性があります)。そのようなベクトルに対するさまざまな操作を高速化するためにできることはありますか?
4

1 に答える 1

1

興味深いことに、Dyalog APL の私の (古い) バージョンでは、文字を小さな整数に変換すると、実際には約 25% 高速に実行されます。これは、最近のバージョンでは高速化されている可能性があります。

試す

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

最大値が 128 未満であることを確認してください。

整数の表現が可能な限り小さいことを確認するには、[]dr 関数を使用します。[]dr a は、整数 -128 <= x <= 127 に対して 82 を返す必要があります。

Dyalog APL は、可能な限り最小の整数幅に自動的に変換されます。

于 2014-08-07T09:17:26.343 に答える