mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-24 04:16:00 +08:00
Use JSStringCreateWithUTF8CString and skip NSString decoding when loading the bundle
Summary: public Benchmarking our startup path has shown we spend a lot of time decoding strings (iPhone 4S / iPhone 5): * reading a 2MB JS bundle: 35ms / 15ms * decoding is to an `NSString`: 186ms / 78ms * transforming that to a `JSString`: 29ms / 10ms Instead of going through an `NSString` transformation, we generate a null-terminated bundle (0.1ms / 0.05ms to copy the data) and use `JSStringCreateWithUTF8CString` (121ms / 53ms) to generate the string. That makes decoding 70% faster. Reviewed By: javache Differential Revision: D2541140 fb-gh-sync-id: 09a016b8edfd46a9b62682c76705564d2024e75e
This commit is contained in:
committed by
facebook-github-bot-3
parent
8e2ec64763
commit
4a3857ef1d
@@ -40,7 +40,7 @@
|
||||
- (void)testNativeLoggingHookExceptionBehavior
|
||||
{
|
||||
dispatch_semaphore_t doneSem = dispatch_semaphore_create(0);
|
||||
[_executor executeApplicationScript:@"var x = {toString: function() { throw 1; }}; nativeLoggingHook(x);"
|
||||
[_executor executeApplicationScript:[@"var x = {toString: function() { throw 1; }}; nativeLoggingHook(x);" dataUsingEncoding:NSUTF8StringEncoding]
|
||||
sourceURL:[NSURL URLWithString:@"file://"]
|
||||
onComplete:^(__unused id error){
|
||||
dispatch_semaphore_signal(doneSem);
|
||||
@@ -128,7 +128,7 @@ static uint64_t _get_time_nanoseconds(void)
|
||||
} \
|
||||
";
|
||||
|
||||
[_executor executeApplicationScript:script sourceURL:[NSURL URLWithString:@"http://localhost:8081/"] onComplete:^(__unused NSError *error) {
|
||||
[_executor executeApplicationScript:[script dataUsingEncoding:NSUTF8StringEncoding] sourceURL:[NSURL URLWithString:@"http://localhost:8081/"] onComplete:^(__unused NSError *error) {
|
||||
NSMutableArray *params = [NSMutableArray new];
|
||||
id data = @1;
|
||||
for (int i = 0; i < 4; i++) {
|
||||
|
||||
Reference in New Issue
Block a user