前回のスレッドが非常に混乱しており、アイデアも変更されたため、新しいスレッドを投稿しています。私は多くの場所でプログラムを変更しましたが、効率を失うことはありませんでした (少しでも得られました)。今では、以前と同じように単純な整数の配列があり、区切り記号は必要ありません。
この種の質問は、すでに何度も回答されていることを私は知っています。考えられる答えはたくさん見つかりましたが、整数配列を単一の文字列に変換する最速の方法を実装するという私の問題は解決しません。
それでは、
int[] Result = new int[] { 636, 1000234545, 1353678530, 987001 }
私は得るべきです:
636000234545353678530987001
各要素の最後の 9 桁のみを取得していることに注意してください。ホンザ・ブレスタンの修正版は次のとおりです。
StringBuilder sb = new StringBuilder();
for (var i = 0; i < xC; i++)
{
tempint = Result[i];
if (tempint > 999999999)
sb.Append((Result[i]).ToString().Substring(1, 9));
else
sb.Append((Result[i]).ToString());
}
return sb.ToString();
そして私の、古い、修正:
//Base – a string array of integers saved as strings {“000”, “001”, … , “999” }
string[] arr = new string[3 * limit];
int x; // temp value
for (int i = 0; i < limit; i++)
{
x = Result[i];
if (x > 999999)
{
arr [3 * i + 2] = Base [x % 1000];
arr [3 * i + 1] = Base [x / 1000 % 1000];
arr [3 * i] = Base [x / 1000000 % 1000];
}
else
{
if (x < 1000)
{
arr [3 * i + 2] = Base [x % 1000];
}
else
{
arr [3 * i] = Base [x / 1000 % 1000];
arr [3 * i + 1] = Base [x % 1000];
}
}
}
return string.Join(null, arr);
そして速度の違い: Honza: 689 ms My: 331 ms
速度を改善する方法はありますか?多分アセンブラを使用しますか?