私は新しいiosです。IOS上のマルチスレッドのNSThreadのパフォーマンスは分かりません。 私は上記の機能のための単一のスレッドを作成する機能にマルチスレッドは遅いですか?
-(void) writeBlock:(NSString *)srcPath toPath:(NSString *)destPath fromIndex:(int)fIndex toIndex:(int)tIndex
{
//create file handle for srcPath and destPath
for(int i=fIndex;i<=tIndex;i++){
//read from source filehandle
//write to dest filehandle
}
//close filehandle.
}
をしている場合、この機能を実行するための時間は1秒です。 しかし、私が作成したとき:
for(int i=0;i<20;i++)
{
[NSThread detachNewThreadSelector: @selector(writeBlock:) toTarget:self withObject:myObject];
//for each thread, tIndex-fIndex is the same with tIndex-fIndex of single above thread
}
20個のスレッドを実行するための時間が13-16secondsです。 私は時間が1-5秒になると思う。マルチスレッドは遅いですか? 誰でも助けてくれますか?ありがとうございました
新しいスレッドを生成する際にオーバーヘッドが発生します。また、これらのスレッドがすべてファイルシステム(おそらくは同じファイル)から読み込もうとしている場合は、ファイルシステムへのアクセスを競合するため、さらにオーバーヘッドが発生します。 – UIAdam