
No.2
- 回答日時:
どのくらいの行数を想定していてどのくらいの速度が欲しいのでしょうか?
例えば, そのスクリプトだと比較のたびに文字数を調べてますが, 「各行の文字数を調べる」という処理は 1回で十分です. そうすると, ちょっとは速くなるかもしれない.
いずれにしても本質的に処理は現在と変わらないんだけどね.
この回答への補足
10億行4GiB程度で、最悪の場合でも丸1日以内に終わらせられるような方法を考えています。
ANo.3さんの方法を使ってみたいと思います。
ありがとうございました。
No.1
- 回答日時:
速度がクリティカルなら、専用のフィルタを作ればいいのでは?
正味30行ぐらいの簡単なサンプルコードを示します。
#こういうの出しておけば、もっとプロな方が、よりよいコードを書いてくれたりして・・・
---------------------------------------
/* mysort.c */
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAXCHARS 256
#define MAXLINES 1048576
typedef struct _indata_{
int n;
char line[MAXCHARS];
} indata;
int comp(const void *a, const void *b){
return(((indata *)b)->n - ((indata *)a)->n);
}
int main(void){
int i=0;
indata *buf;
buf = (indata *) malloc(MAXLINES*sizeof(indata));
while(!feof(stdin)){
if (fgets(buf[i].line, MAXCHARS, stdin)==NULL) break;
buf[i].n = strlen(buf[i].line);
i++;
}
qsort(buf, i, sizeof(indata), comp);
for (;i>0;i--){
printf(buf[i].line);
}
return 0;
}
---------------------------------------
$ make mysort
$ cat foo.txt | ./mysort
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# メインプログラムに#include <algorithm>を書いて、 そのメインプログラムが // 3 2023/05/02 11:24
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:12
- UNIX・Linux テキストファイルをページ番号付きでコマンドラインから印刷したい 1 2023/02/22 12:47
- UNIX・Linux Linuxについて質問です。 シェルスクリプト名をdiff.shとして、以下のように2つのテキストフ 1 2023/02/03 20:06
- その他(Microsoft Office) Excel関数での質問です 1 2022/11/22 13:06
- Excel(エクセル) 結合セルのソートについて 5 2022/04/22 11:57
- その他(プログラミング・Web制作) プログラミング python 3 2023/06/14 03:55
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
echoの出力の最後のスペースを...
-
xcopyで特定のファイルのみをコ...
-
【VBA】テキストファイルから特...
-
コマンドにてテキストファイル...
-
Linux(raspberry pi)でのcpコマ...
-
【DOSコマンド】for の デリミ...
-
コマンドプロンプトで相対パス...
-
bat処理の実行結果ログ出力方法...
-
リダイレクト >> を複数のファ...
-
PIFファイルにつきまして
-
ワードのテキストボックスの中...
-
コマンドプロンプトでFTPでエラー
-
バッチコマンドの「set」で入力...
-
NULLの置き換えについて
-
DOSコマンドで結果として出力さ...
-
UNIX ファイル存在チェックの方法
-
apple scriptファイル名の一部...
-
エクセルのセルに設定したハイ...
-
バッチファイルのfor文の使い方...
-
フォルダに入っているファイル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
xcopyで特定のファイルのみをコ...
-
echoの出力の最後のスペースを...
-
echo "abc" >> test.txt で、先...
-
【VBA】テキストファイルから特...
-
コマンドプロンプトで相対パス...
-
リダイレクト >> を複数のファ...
-
コマンドプロンプトで標準エラ...
-
バッチファイル 指定行の切り出し
-
コマンド実行結果を環境変数に...
-
コマンドにてテキストファイル...
-
バッチファイルのfor文を使って...
-
バッチファイル 現在のフォルダ...
-
NULLの置き換えについて
-
FTPのバッチファイルで日付を引...
-
バッチファイルで改行の出力
-
.txtって、縦書きにはならない...
-
複数のテキストファイルをひと...
-
ワードのテキストボックスの中...
-
複数テキストファイル連結につ...
-
【DOSコマンド】for の デリミ...
おすすめ情報