| レス数が950を超えています。1000を超えると表示できなくなるよ。 |
cygwin使っている人いますか?
[505:名無しさん@お腹いっぱい。 (2001/07/15(日) 21:47)]
cygwinだとconfigureとかすごく時間かかるんだよな。
そしてその処理時間の相当な部分がsedの呼び出しで食われている。
sedとrmをshのbuilt-in commandにすりゃずいぶん速くなるだろうに。
今度自分でやってみるかな。
[506:名無しさん@お腹いっぱい。 (2001/07/15(日) 23:45)]
>>504
をを、言われて見ればその通りだ > cygwinスレ
[507: (2001/07/16(月) 00:03)]
gdbが使えない・・・
cygitcl30.dllがないって言われるんですけど。
どこにあるんでしょうか?
[508:名無しさん@お腹いっぱい。 (2001/07/16(月) 01:15)]
>>507
tcltkに入っています。
[509:名無しさん@お腹いっぱい。 (2001/07/16(月) 16:11)]
>>505
そりゃむづかしいぞ
ついでにいえば、アプローチが間違ってる。
そんだけの技術があるんなら、cygwinそのものをなおしてやれよ(藁
[510:cygwin (2001/07/16(月) 16:26)]
>>505
Windowsはプロセスの起動が*nixに調べて遅いから、*nixを
実質的にエミュレーションしているcygwinでsedとかプロセスを
バリバリ起動するものは非常に重く(遅く)なると思う。
*nixのネットワークサーバアプリケーションのようにfork()する
やつも同じ理由で遅くなる。
これはどっちが正しいとか言う問題ではなくて双方の性格の問題なのだが。(Windowsは統合することを良しとする性格なのに
対して、*nixは分散することを良しとするため)
[511:名無しさん@お腹いっぱい。 (2001/07/16(月) 16:38)]
>>(Windowsは統合することを良しとする性格なのに対して、*nixは分散することを良しとするため)
統合、分散とプロセスの起動が遅いのは関係ないでしょ。
Winはネイティブスレッドがあるから、プロセスをたくさん立ち上げるような
使い方を想定してなくて、そのあたりのチューニングがしてないだけ。
[512:505 (2001/07/16(月) 17:11)]
>>509
よく調べた訳じゃないし、cygwinをいじるような技術は全く持ち合わせて
いない程度の人間の言うことだから、割り引いて聞いてほしいのだが、
ashのソースを見ると、built-inの中で、bltin/echo.cとbltin/test.cに
ついては、あたかも独立したプログラムであるかのように分離されて
いるみたいで、
#include "builtin.h"
#deifne main cmdtest
なんて書いてあった。argc,argvなんかもエミュレートしているようだ。
だから、sedも、ファイル関係と名前の衝突に注意すれば、
比較的簡単にbuilt-in化できそうな気がする。ストリームの問題は
クリティカルだが、echoでリダイレクトが効くんだから、ash本体の
ソースの方で標準入出力の切り替えとかやっているはず。
exit()はsetjmp/longjmpでごまかす手がありそうだし。
[513:名無しさん@お腹いっぱい。 (2001/07/17(火) 02:56)]
そういえばWin3.1の頃、Unix like toolsの各コマンドを1つのDLLにぶち
込んで、各exeはDLLのルーチン呼ぶだけのstubになってる奴があったな。
ComWinだったか。
まぁCygwinの場合ボトルネックがfork部分なのは明白なので、それをなん
とかしようと思ったらやっぱりshell builtinにするしかないだろなぁ。
[514:511 (2001/07/17(火) 07:13)]
ちょっとCygwinのFAQを見てみたけどforkのインプリメントかなり
アクロバチックな方法だね。これじゃ遅いよ。
CygwinをNT/Win2000専用にして、CreateProcessじゃなくて、
NtCreateProcessを直接使うようにすれば、CreateProcessで指定できない
パラメータを指定できるようになり、forkをネイティブで実現できる
ようになるからかなり速くなるはず。でもこの辺Undocumentedだから
ちとつらいか。
read.cgi ver5.26+ (01/10/21-)