0

私はobjective-cアプリケーションを最適化していますが、そのアプリケーション内には約4000文を含む大きなNSStringがあります。理由を聞かないでください...しかし、あります。ランダムに文を選んで返します。

これはコードです(私は百分率を短縮しました):

NSString *sentences[] = {@"For crying out loud", @"Too much information", @"Tomorrow", @"Tonight", @"I don't know", @"Forever and ever ", @"Lets get high", @"Foreigner ", @"Sick"};

self.responses = malloc(sizeof(self.responses)/sizeof(void*));
memcpy(strings, self.responses, sizeof(sentences)/sizeof(void*));

[...]

[self performSelector:@selector(didRecieveMessage:) withObject:self.responses[rand() % sizeof(self.responses)] afterDelay:rand() % 15 + 2];

ここで、これを最適化する必要があります。Db内に文を含め、SQLLiteDBを呼び出してランダムな文をフェッチすることを考えていましたが、これを行うためのより良い方法はありますか?text fileたとえば、、、またはPlist file?からランダムな行を読み取る もしそうなら、どうすればいいですか?もちろん、記憶は最も重要な側面の1つです。

4

1 に答える 1

0

配列全体をコピーせず、memcpy で 2 倍のメモリを占有することから始めることができます。

ここに切り取りと貼り付けの霧が見られますが、最初の配列に NSArray を使用し、配列全体の memcpy を実行するべきではないことは明らかです。

それ以外は、それをsqliteに入れてクエリを実行すると、これらすべてがメモリに保存されません。これが iOS の場合、このデータを間違いなく sqlite にダンプします。サイズがメモリ内にあってはならないあらゆる種類の参照データ。

これはSqliteの素数です....

于 2012-08-08T22:19:01.690 に答える