7に比べると8はソートが遅いのはなぜ?


AS  2014-04-09 22:39:32  No: 46227

7のXE2で作ったプログラムはXE5で完全にコンパイルされ、その逆も真なので
とても楽でいいのですが、問題があります。
XE5でコンパイルすると、ソートが極端に遅くなります。
7でソートすると一瞬で終わるものが、8では35秒もかかります。

StrL := TStringList.Create;
Strlに読み込み;
StrL.Sort;

8では別のソートが組み込まれたのか思っていますが、分かっている方がいましたら、
よろしくお願いします。


igy  2014-04-10 00:09:34  No: 46228

>Strlに読み込み;
>StrL.Sort;

読み込みの処理とSortの処理、それぞれ何秒かかっていますか?


AS  2014-04-10 02:06:35  No: 46229

igyさん、ありがとうございました。

で、質問はまったく正しくありませんでした。
かかった時間は0秒です。
時間がかかるのは

RichEdit1.Lines.Text:=StrL.Text;

でした。
約48秒かかるのですが、
別の複雑な操作をした後のソートのほうが35秒でした。

7ではこれも含めて一瞬です。
理由分かりますか??


igy  2014-04-10 02:33:24  No: 46230

確認ですが、

問題は、
・RichEdit1.Lines.Text:=StrL.Text; で約48秒かかる
・別の複雑な操作をした後のソートのほうが35秒かかる
ということですか?


tor  2014-04-10 02:40:33  No: 46231

で、そのデータは具体的にどれだけのサイズなのでしょう?

また、その代入文だといちいちモフをヤにしてからコピーしてまた戻してますね。つまり
一方はリストの中身を全部くっつけて一つながりの長ーい文字列にして、
もう一方はそれを頑張って一つ一つ区切りながら元のリストに戻しているわけです。すごく無駄に思えません?
メナアョフョチィモフゥサヲサとリストのままコピーしてあげたらどうでしょうか。
スススススススススススススススススススススススススススススススススススススススス
ニコ チモ
トコ イーアエッーエッーケィ水ゥ アケコアーコオア  書込者ノト:ロ ァ 。「。 ン

返事いただいて、ありがとうございます。

さんへ
データは、ァャァ区切りでオ項目を一つの文字変数にしてエーーー行集めたものです。
エク秒かかった単純なソートのほうは、読み込んだデータをそのままソートします。
ウオ秒のほうは、第二項目を優先するために第二項目を先頭に移動する操作をしたものをソートしています。
表示するときにはまた元に戻すんですが。

さんへ
フォルダで見たらアークヒです。
メナアョフョチィモフゥサヲサ
これに変更して実行したらエア秒でした。

7で実行するとすべて一瞬にすみます。

単純な方のプログラムは以下の通りです。
ヲサヲサヲサヲサヲサヲサモフヲサコスヲサヤモフョテサ
ヲサヲサヲサヲサヲサヲサ
ヲサヲサヲサヲサヲサヲサヲサヲサッッアョフョィァヤースァォヤヤモィゥゥサ
ヲサヲサヲサヲサヲサヲサヲサヲサモフョヤヲサコスヲサメナアョフョヤサ
ヲサヲサヲサヲサヲサヲサヲサヲサッッアョフョィァヤアスァォヤヤモィゥゥサ
ヲサヲサヲサヲサヲサヲサヲサヲサモフョモサ
ヲサヲサヲサヲサヲサヲサヲサヲサッッアョフョィァヤイスァォヤヤモィゥゥサ
ヲサヲサヲサヲサヲサヲサヲサヲサメナアョフョチィモフゥサヲサッッ
ヲサヲサヲサヲサヲサヲサヲサヲサッッメナアョフョヤコスモフョヤサ
ヲサヲサヲサヲサヲサヲサヲサヲサッッアョフョィァヤウスァォヤヤモィゥゥサ
ヲサヲサヲサヲサヲサヲサ
ヲサヲサヲサヲサヲサヲサヲサヲサモフョニサ
ヲサヲサヲサヲサヲサヲササ

自分ではどう調べたらいいのか、全く分かりません。

よろしくお願いします。
スススススススススススススススススススススススススススススススススススススススス
ニコ 
トコ イーアエッーエッーケィ水ゥ イアコウカコーー  書込者ノト:ロ 「」「 。 ン

試しに、新規プロジェクトで、該当する箇所だけのプログラムを作成し、動作確認するのは、いかがですか?

トヲサリナイで、単純な方と単純じゃない方のプログラムを作成、
それを、トヲサリナオでも、コンパイルし、
ラキとラクで、それぞれ動作させてみて、かかる時間を確認してみるとか・・・
スススススススススススススススススススススススススススススススススススススススス
ニコ チモ
トコ イーアエッーエッーケィ水ゥ イウコーイコウク  書込者ノト:ロ ァ 。「。 ン

今晩は。
また、よろしくお願いします。

メインフォームに組み込む前のメモ帳のようなものがありますので、
それを使って計測しました。

その結果、単純のほうがウク秒くらい、ちょっと複雑な方がイオ秒くらいと
早くなってはいますが、7では両方とも一瞬で終わりますので、
リナオがおかしいことには間違いないと思います。

以前、9だったかリナイだったか、の読み込み最大行数がエーーー行以下だった
ことがあります。これもここで私が質問して分かったことなのですが、
詳しい人がメの設定がと同じくらいになっているとか教えて頂いた
ことがありました。
当時は、何人もの人が自作されて確認していただきました。

それと同じように
メナアョフョヤコスモフョヤサ
の何かの設定がおかしくなっているのでと想像しています。

リナ5をお持ちほかの人が確認していただけたら、うれしいです。
スススススススススススススススススススススススススススススススススススススススス
ニコ チモ
トコ イーアエッーエッーケィ水ゥ イウコオエコアー  書込者ノト:ロ ァ 。「。 ン

リナイでコンパイルしたメモ帳のようなものをコピーして、8に貼り付けて使用すると、
やはり、ウキ秒とウア秒という感じで、の問題ではなく8の問題じゃないかと??
スススススススススススススススススススススススススススススススススススススススス
ニコ 
トコ イーアエッーエッアーィ木ゥ アーコイウコウア  書込者ノト:ロ ァ。   ン

ソートに時間が掛かるじゃなくてメナにテキストを設定するのに時間が掛かるって話なら
メナアョフョヤコスモフョヤサ

メナアョフョツユサ
メナアョフョヤコスモフョヤサ
メナアョフョナユサ
こうしたら直ったりしないですか?
スススススススススススススススススススススススススススススススススススススススス
ニコ チモ
トコ イーアエッーエッアーィ木ゥ アイコーエコウウ  書込者ノト:ロ ァ 。「。 ン

さん、ありがとうございます。

時間は、単純なソートのほうで約イク秒とかになりました。

まだまだですね。

また、よろしくお願いします。

私は会社のほうに問い合わせてみようと思ってます。
スススススススススススススススススススススススススススススススススススススススス
ニコ チモ
トコ イーアエッーエッアーィ木ゥ アウコエウコアオ  書込者ノト:ロ ァ 。「。 ン

ヲサヲサに行ってみましたが、
質問はどこでしたらいいのか、分かりませんでした。

さて、私のパソコンの問題だけかもと思って、知人のパソコンを借りて、
同じプログラムで試してみましたが、やはりエオ秒と変わりませんでした。

リナインでは何とかとかがありましたが、リナオでは無いようですね?
スススススススススススススススススススススススススススススススススススススススス
ニコ 
トコ イーアエッーエッアーィ木ゥ アエコアアコアウ  書込者ノト:ロ ヲィァ。 ン

ヲサリナインでは何とかとかがありましたが、リナオでは無いようですね?

何とかヲサというのが、何のことかわかりませんが、
ユならユイと、いくつかのネがあるようです。

また、昨日、ラヲサクョアで試したら、ヤプロパティへの代入では確かに遅かったですが、
テキストファイルをフニニで格納すれば、速かった気がします。
スススススススススススススススススススススススススススススススススススススススス
ニコ 
トコ イーアエッーエッアーィ木ゥ アエコエカコオケ  書込者ノト:ロ 」 ァ」ハノ

 ン

ふむむ……
ュヲサフを介さずに直接ヲサヤメナョヤヲサに代入する
ュヲサモチしてからモヤに代入
といった手法でも同じですか?
スススススススススススススススススススススススススススススススススススススススス
ニコ おかぽん
トコ イーアエッーエッアーィ木ゥ アオコイカコイク  書込者ノト:ロ 「。」」、 ン

フを介して一行ずつ追加してしまうと、行数が多くなれば多くなるほど遅くなるようですね。
トオャヲサリナウヲサモヲサでやってみましたが、イヘ、ウオーーー行のテキストを、ヤモフにフニし
フを介してメナに表示させるとウー秒以上かかりました。
トキはインストールしてありませんが、ソースを見る限りトオと大差ないような感じなので
トキでは一瞬というのが解せぬ。

さんのレスにもあるように
メナアョフョテサ
メナアョモヤヲサコスヲサフョヤサヲサ

これで、一瞬で表示されることは確認できたので、こちらに置き替えればよろしいかと。
スススススススススススススススススススススススススススススススススススススススス
ニコ チモ
トコ イーアエッーエッアーィ木ゥ アクコイイコエイ  書込者ノト:ロ ァ 。「。 ン
モコ 

みなさん、ありがとうございました。
解決しました。

キさん
そのユミトチヤナのことです。
思い出すことがむつかしい年頃ですので、間違いは許してください。

の読み込みには問題ないですね。
いろいろとありがとうございました。

さん
ありがとうございました。
お蔭で解決できました。

おかぽんさんへ
ありがとうございました。
ちゃんと  式として表現いただき、感謝いたしております。
言葉で言われても式に変換できないので、助かりました。
キというのはキ、クというのはクのことです。

次の質問は、文字化けです。
いろいろと確認してから質問したいと思ってますが、
自分で解決できたらいいなと思います。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加