大きなファイル X12 を読み込んで、その中の情報を解析しています。回避できないボトルネック関数が 2 つあります。read_line() と get_element() これら 2 つの関数を高速化する方法はありますか? get_element 関数の主なボトルネックは Substring メソッドのようです。
public String get_element(int element_number) {
int count = 0;
int start_index = 0;
int end_index = 0;
int current_index = 0;
while (count < element_number && current_index != -1) {
current_index = line_text.IndexOf(x12_reader.element_delimiter, start_index);
start_index = current_index + 1;
count++;
}
if (current_index != -1) {
end_index = line_text.IndexOf(x12_reader.element_delimiter, start_index);
if (end_index == -1) end_index = line_text.Length;
return line_text.Substring(start_index, end_index - start_index);
} else {
return "";
}
}
private String read_line() {
string_builder.Clear();
int n;
while ((n = stream_reader.Read()) != -1) {
if (n == line_terminator) return string_builder.ToString();
string_builder.Append((char)n);
}
return string_builder.ToString();
}
x12 データを読み取っています。これがどのように見えるかの例です。http://examples.x12.org/005010X221/dollars-and-data-sent-together/