awk: LinuxとWindowsの違いと実行速度について

このQ&Aのポイント
  • WindowsとLinuxの両方で動作するawkの実行速度は異なる可能性があります。プログラムによっても速度が異なることがあります。
  • WindowsやLinux用の高速なawkプログラムが存在するかは不明です。Perlなど他の言語の方が速い場合もあります。
  • WindowsXPでは複数のawkプロセスを同時に実行できますが、Linuxではどのように実行するかは環境によります。
回答を見る
  • ベストアンサー

awk:LinuxとWindows

ど素人の質問で申し訳ありません。呆れずに読んでいただければ幸いです。 今、WindowsXP上で、awkで.csvファイルの分析をやっています。 5万行くらいの数値データを標準偏差等を計算しながら、標準偏差の0.1倍を元の数値が超えたらその値をマークしろ、0.2倍だとどうか、0.3倍だとどうか、何倍にすれば良いのか等パラメーターを探しております。 計算方法とパラメーターは上記では標準偏差について書きましたが、その他に2~4種類くらいあります。 やっていることは、 1.パラメーターをfor文で逐一変えていく 2.パラメーターと計算方法によって元の数値を計算 3.if文で条件にあったところを抽出 4.最後まで行ったら1.に戻り、パラメーターを変えて再度データを頭から。 ということをしております。 最初はExcel-VBAでやっていたのですが、遅いし、そうだ、awkでできる、と思ってawkで組んでみました。 awkならUnixでも動くよな(本家だし)、と気付きました。 そこで質問です。 UnixとWindowsでawkの実行速度は違うでしょうか? Windows用のawkでも、プログラムによって速度が結構違うようですが。 Windows用でもLinux用でも、速いawkがありますでしょうか? あるいは、たぶん情報不足だと思いますが、Perl等の方が速いだろうというようなことはありますでしょうか?(触ったことはありません) 2コアや4コアのパソコン用CPUへの対応はどうなっているでしょうか? 今Athlonのx2を使っているのですが、Windowsのタスクマネージャーを見ると、awkプログラム一つ動かす毎にCPUを50%(CPU片方分目一杯)使っているような感じです。 例えばLinuxだと2CPUが協調して、100%で動作して処理時間が半分になるというようなことはあるでしょうか? また、WindowsXPですと、コマントプロンプト(DOS窓?)を2つ開けて、二つのawkを同時に実行させるようなこともできているのですが、Linuxだと可能でしょうか?(KDE?のような画面からawkってどうやって実行させるのでしょうか?) 有名だということでVine Linuxのダウンロードを考えておりますが、awkの実行速度という点でこれで良いでしょうか? インストールしてしまえばファイヤーウォールは標準で動いているんでしょうか? 光ケーブルのLan環境でネットに接続しているのですが、ケーブルを繋げば即ウェブにアクセスできるのでしょうか? ウィルス対策は標準でどうなっているのでしょうか? Windowsとは状況が違うと思いますが、アンチウィルスだのウィルスバスターだのそんな感じのソフトをインストールする必要があるのでしょうか? ご存じの範囲だけで構いませんのでよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4848/10261)
回答No.1

>UnixとWindowsでawkの実行速度は違うでしょうか? >Windows用のawkでも、プログラムによって速度が結構違うようですが。 Windows版だと、gnu-awk(いろんなOSで動く汎用のソース)と、win32用に書き下ろされた版とあると思うので、おそらく後者のほうが速いかと思います。その代わり、言語仕様がLinux版と異なる可能性があります。私はgnu版を使ってますが、速度比較したことは無いですね。何時間もかかる処理はしないので、速度は気にしてません。 >Windows用でもLinux用でも、速いawkがありますでしょうか? 上に書きましたが、Linuxだとまず間違いなくgnu-awkなので同じです。 >Perl等の方が速いだろうというようなことはありますでしょうか? 処理内容によるとしか言いようが無いですが、Perlのほうが高度な機能を持っているので、awkだと自分でロジックを書くところがPerlだと言語の機能で簡潔に書けるとしたら、Perlのほうが速いです。 また大きな処理をすることも想定されているので、おそらく同じような処理でもPerlのほうが速いでしょう。 >2コアや4コアのパソコン用CPUへの対応はどうなっているでしょうか? 内部でマルチプロセスで動くawkは無いと思います。 >Linuxだと可能でしょうか?(KDE?のような画面からawkってどうやって実行させるのでしょうか?) OSによって多少違いますが、メニューバーからもしくは画面右クリックで「端末」を選ぶと擬似端末ウィンドウ(シェルプロンプトとでも呼ぶべきもの)が開きます。 >awkの実行速度という点でこれで良いでしょうか? Linuxだと同じです。 >インストールしてしまえばファイヤーウォールは標準で動いているんでしょうか? Vineは使ったことないのでデフォルトがon/offどちらかわかりませんが、インストール時に選択もしくはインストール後に設定(つまりWindowsと変わらない)。 >ケーブルを繋げば即ウェブにアクセスできるのでしょうか? 今のメジャーなLinuxだと、DHCP標準でFirefoxも付いてますね。 >ウィルス対策は標準でどうなっているのでしょうか? これもWinodwsと同じ。付属はしてないが売っている。 >アンチウィルスだのウィルスバスターだのそんな感じのソフトをインストールする必要があるのでしょうか? 身元不確かなソフトをダウンロードするなら必要でしょう。

tekcycle
質問者

お礼

ありがとうございます。 Perlのコマンドを調べてみました。 sortが面白そうです。 実は出てきたデータの成績上位を抜き出すためにsortしなくてはならないなぁと頭を抱えていたところでした。 これならどうにか組めるかも知れないな、と思いました。 今動かしているプログラムは単純なのか、Perlのコマンドなら、ということは無さそうです。 Pealの方が速いかも、ということですので、Perlでも組んでみたいと思います。 Vineもこちらでどうにか使えそうなことが判りました。 どうもありがとうございました。

関連するQ&A

  • Windowsでawkを使う

    Windows XPでawkをしてみたいのですが、webサイトを調べてみるとUNIXなら標準でついてるということを知りました。 "Windows Services for UNIX"とかいうのを見かけたのですが、これでawkが使えるようになるのでしょうか。また"gawk"なるものがあるようですが、どこからダウンロードできるのかよくわかりません。 awkをWindows上で使えるようにするための方法を教えてください。

  • Linux コア振り分け

    こんばんは、 始めまして、 Linuxを使ってサーバーを建てています。 LinuxもWindowsのようにアプリケーションに当てるCPUのコアを振り分けることは出来ませんか? もし出来るなら教えて下さい。

  • Linux CPUコア振り分け

    Linuxを始めて1ヶ月程です。 Linuxを使って自宅サーバーを趣味でやってます。 LinuxもWindowsのようにアプリケーションに振り分けるCPUのコアを振り分けることは出来ませんか? OSはCentOS 5.7です。 よろしくお願いします。

  • linuxからC言語のコンパイラー使えますか?

    仕事でunixからC言語のコンパイラーをつかっています。 WindowsXPからC言語となるとすぐVISUALC++を想像してしまい 単純なunixでつかっているようなものが見当たりません。 linuxはつかったことないのですが、unixと似ているとききました。 unixと同じく標準でcコンパイラーは付属しているのでしょうか? ちなみにC言語を使いテキストファイルを編集(並び替えやあるワードの抜き出しやあるワードの置換)するプログラムを組み実行しています。

  • 正規分布の標本標準偏差

    今、抵抗の正規分布の実験をしています。 ここで、1.6KΩの抵抗200本をLCRメーターを用いてKΩ単位で測り、これをエクセルに入力しました。 これをΩの単位に直すために1000倍して、これらの数値から標本標準偏差を出そうと思っています。 しかしながら、どう計算させても10.59という馬鹿大きい数値が出てきてしまいます。 最初はエクセルのSTDEV関数を用いて算出しましたが、どうにも信用できない数値なので、STDEV関数は使わず標本標準偏差の基本式を少しづつ崩してエクセル上で計算させたのですが、やはり10.59という数値になってしまいました。 試しに、KΩ単位のままで標本標準偏差を出してみたところ、0.01という、Ω単位の時の1000分の1倍の数値しか出てきませんでした。 標本平均は1590Ωと、少し低い値ですが、許容誤差範囲だと認識しています。 エクセルのシートを変えて計算させてもこの数値にしかなりません。 標本標準偏差は1に近いほど良いということですが、どのくらいの数値の範囲に収まるのが理想的なのでしょうか? また、このような経験のある方、こうじゃないか?と思われる方、エクセル、標本標準偏差に詳しい方がいらっしゃいましたら、ご回答をよろしくお願いします。

  • Linuxのセキュリティーについて

    PCにすでにWindows用のウイルス対策ソフトが入っている場合に、マルチブート・デアルブートでLinuxを実行する場合Linux用ウイルス対策ソフトをいれることが可能でしょうか。LinuxのウイルスはWindowsに比べ少ないようですが、皆無ではないようです。 ウイルス対策ソフトはLinuxを守るのではなく、windowsを守るためと聞きます。 LinuxはCD-R・DVD-R等書き込みしないメディアで起動した場合、心配ないようですけどHDDを使う場合はウイルス対策ソフトを入れた方がいいのでしょうか。 対象はPuppyLinux5.5です。コンパクトでRAMエリアで動作するため機敏に動くところが、気に入りました。(デストリビューションがたくさんあり、現在模索中です) PuppyLinuxにもClamAV・Avast!等のセキュティーソフトがあるようです。 当方Linuxは初心者です。よろしくお願いします。

  • Linux Unix の仕事をやりたい

    こんばんは。 当方テクサポ、開発含め5年ほどIT業界におりますが Windows Server環境や言語が中心でLinux、 Unix の 案件に入るチャンスがありませんでした。 Linux Unixの案件、というよりはOSとしてのコアな 管理知識(シェルとかチューニングとか)、ネットワーク を身につけておきたいと考えています。 ※現在31歳でネットワークの仕事は未経験です となるとどのような職種を目指すのが良いのでしょうか?。 1.ネットワークエンジニア  (ルータや機器操作とかのイメージが強いのですが・・) 2.社内SE 3.インフラ担当 などが思い浮かびますが・・・ 未経験からそういった教育して職を紹介するスクールが あるのでそれも考えてみようかな。。と思っています。

  • Windows Server 上で Net-SNMP の exec パ

    Windows Server 上で Net-SNMP の exec パラメータのようなことは実現できないでしょうか。 もう少し細かく言うと、 Windows Server 2003 に標準で入っている「SNMP Service」で Unix/Linux の Net-SNMP で言う exec パラメータに相当するような 内部的にコマンドを実行してその実行結果をSNMPのデータとして格納する仕組みが できるかどうか探してるのですが、 ご存知な方がいらっしゃれば教えてください。 Net-SNMP に Win32 版があることは知っていますが サーバー上で動作させているアプリの都合で標準の SNMP Service を停止できないことと 管理ルール上あらたなアプリをインストールするのは政治的に大変なので SNMP Service 上で実現する方法を探してます。

  • ハイパースレッディングで複数の数値計算を完了する時間は速くなるのでしょ

    ハイパースレッディングで複数の数値計算を完了する時間は速くなるのでしょうか? 例えば、Core i7 だと ・コアが4つ ・スレッドが8つ(1コア2スレッド) となっています。 時間のかかる数値計算のプログラム(ロケットの軌道の計算など)をパラメータ(初期条件など)を変えて8つ計算したい時、 (1)8つの計算を一気に計算する のと (2)4つずつ、2回に分けて計算する のではどちらが効率がよい、あるいは、速く終了するでしょうか? ハイパースレッディングについての説明を読みました。あまり分かり易いものがなかなか見つからなかったのですが、↓ここを見て何となく原理が分かりました。 http://shop.tsukumo.co.jp/special/030626a/ これをみると、作業をする人(?)がハイパースレッドだとスレッド倍になるので、(1)のように、1つのコアに1つの作業をさせるより2つの作業をさせた方が良いのかなとも思います。 よろしくお願いします。

  • LinuxからWindowsサーバへのrsh

    はじめてですが、Unix/LinuxからWindows2000サーバおよび2003サーバへのrshを起動するために必要な環境について質問をさせていただきます。 逆向き(WindowsからUnix)については実績があります。 リモートホストのWindows側のhostsファイルにUnixのアドレスと名前を登録、ローカルホストのUnix側のhostsや.rhostsファイルにWindowsのアドレス、名前、ユーザ情報を登録するとWindows側でUnixコマンドが遠隔起動できます。 今、実現したいのは、Unix/Linuxをリモートホスト、Windows2000サーバおよび2003サーバをローカルホストとしてUnix/Linux側からWindows側の処理を遠隔起動することです。 hostsや.rhostsファイルは、設定する側が逆になるだけで、考え方は同じと思われます。 Windows側でrshのデーモンプロセスが起動している必要があると思われます。 巷では、WindowsにSFUやSUA(Unixエミュレータ)を導入すればできるという情報が多い様です。 SFUやSUAを導入せず、rshのデーモンプロセスを単独でかつフリーで入手することは可能でしょうか? Windowsのバージョンにより、デーモンプロセスが標準で装備されていたり、別途導入する必要があったりするのでしょうか? よろしくお願いいたします。