Ich habe festgestellt, dass CTFramesetterCreateWithAttributedString FrameSetter mit chinesischen String in iOS5 zu erstellen war sehr langsam, aber in iOS4 ist es schnell.warum FrameSetter mit chinesischem Text erstellen war extrem langsam in iOS5
I haben einen Test wie folgt ausgeführt: (chinese.txt 77571 chinesische Zeichen enthalten und 233727 Zeichen enthalten English.txt)
NSString *englishCtn = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", [self documentDirectory], @"english.txt"] encoding:NSUTF8StringEncoding error:nil];
NSAttributedString *englishCtnA = [[NSAttributedString alloc] initWithString:englishCtn];
NSString *chineseCtn = [NSString stringWithContentsOfFile:[NSString stringWithFormat:@"%@/%@", [self documentDirectory], @"chinese.txt"] encoding:NSUTF8StringEncoding error:nil];
NSAttributedString *chineseCtnA = [[NSAttributedString alloc] initWithString:chineseCtn];
double start = [[NSDate date] timeIntervalSince1970];
CTFramesetterCreateWithAttributedString((CFAttributedStringRef)englishCtnA);
NSLog(@"english length:%d time %f", englishCtn.length, ([[NSDate date] timeIntervalSince1970] - start) * 1000);
start = [[NSDate date] timeIntervalSince1970];
CTFramesetterCreateWithAttributedString((CFAttributedStringRef)chineseCtnA);
NSLog(@"chinese length:%d time %f", chineseCtnA.length, ([[NSDate date] timeIntervalSince1970] - start) * 1000);
in IOS 5 ist das Ergebnis:
chinese Länge: 77571 Zeit: 12140,347004
Englisch Länge: 233727 Zeit: 75,886011
in iOS 4 ist das Ergebnis:
chinesisch Länge: 77571 Zeit: 53,114176
Englisch Länge: 233727 Zeit: 55,696011
I xCode Tool Zeit-Profiler, um zu sehen, was passieren verwenden, fand ich, daß die Funktion Trun :: GetNextLigatureCandidateCharRange (long) nehmen die meisten der Zeit, ich weiß nicht, wie zu optimieren, helfen
e ... Ich weiß nicht, was du meinst – bang
Warte ... ist diese Funktion (GetNextLigature ...) deine oder die Laufzeit? – borrrden
es ist ein Teil des Cortex-Frameworks – bang