入力が文字列のタイプであるかどうかの質問チェックが閉じられている間、2つの答えが私の心の中でマイクロ最適化の質問を引き起こしました:以下の2つの解決策のどちらがより良いパフォーマンスを発揮しますか?
Reed Copseyは、以下を使用してソリューションをChar.IsLetter
提供しました。
string myString = "RandomStringOfLetters";
bool allLetters = myString.All( c => Char.IsLetter(c) );
Mark Byersの正規表現を使用した適応ソリューション:
string s = "RandomStringOfLetters";
bool allLetters = Regex.IsMatch(s, "^[a-z]+$", RegexOptions.IgnoreCase);
リードとマークのどちらかに質問したくないので、どちらが優れているかを判断するための簡単なテストを作成すると思いました。問題は、コードの最適化をあまり行っていないことです(コードの可読性を何よりも優先する傾向があります)。
それぞれの実行の前後にタイムスタンプを取得する以外に、どのソリューションがより高速に実行されるかを決定する他の(より良い?)オプションは何ですか?
編集
Martinの回答を修正Console.WriteLine(...)
して、コンソールアプリケーションとして実行しました。LinqPadがアプリケーションを実行する方法は正確にはわかりませんが、結果はほぼ同じでした。
41 178