fatihtas / martmara-backend-ugur

0 stars 0 forks source link

Try to increase search performance #3

Closed ugurdonmez closed 9 years ago

ugurdonmez commented 9 years ago

frontend call

+(void) search:(NSDictionary )parameters andCompletion:(void (^)(NSArray * , int))completionBlock { NSData jsonData = [NSJSONSerialization dataWithJSONObject:parameters options:NSJSONWritingPrettyPrinted error:nil];

NSString * token = [Util getToken];
NSMutableDictionary *headerDict = [NSMutableDictionary new];

if (token)
    [headerDict setObject:token forKey:@"x-access-token"];

[[BaseService instance] sendAsynchronousRequestToURL:SEARCH
                                              method:@"POST"
                                             headers:headerDict
                                                data:jsonData completion:^(NSURLResponse *response, NSData *data, NSError *error) {

                                                    NSHTTPURLResponse * httpResponse = (NSHTTPURLResponse *) response;
                                                    int code = [httpResponse statusCode];

                                                    if (error.code == kCFURLErrorUserCancelledAuthentication)
                                                        code = 401;

                                                    if (code != 200) {
                                                        if (completionBlock)
                                                            completionBlock(nil , code);
                                                        return;
                                                    }

                                                    @try {
                                                        NSArray * venues = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingAllowFragments error:nil];

                                                        if (completionBlock) {
                                                            completionBlock(venues , code);
                                                        }
                                                    }
                                                    @catch (NSException *exception) {
                                                        if (completionBlock) {
                                                            completionBlock(nil , code);
                                                        }
                                                    }

                                                }];

}

borakrc commented 9 years ago

abiler ben simdi bizim search'un gec yanit vermesi isine bakiyorum da. api'a search request attigimda 1 saniyede falan donuyor bana su anda resultlar. stringin de aktarilmasi vesaire dahil baya hizli bi cevap bu bildigin. client tarafinda olmasin sikinti?

borakrc commented 9 years ago

her search 30kb civari bi sey donuyor. yalniz benim 1 saniye dedigim datanin serverda olusturulup clienta aktarilmasi dahil 1saniye. evdeki internetim 3Mbit, yani 375kb/s civari bi sey su anda.

ben yine de optimize ediyorum search'u, 1 saniye de cok.

borakrc commented 9 years ago

"prefix" : "kebap", "longitude" : 41.03591, "latitude" : 28.99127 ile arattım. koordinatlar istanbul, kebap diye aratınca da bir hayli sonuç dönüyor. biraz yavaş cevap aldık (6 saniye civarı). back end'i hızlandırmak lazım. üstteki iki postu dikkate almayın lütfen.

yine de back endin hızlı döndüğü requestlerde ios yavaş çalışıyor olabilir, bu sonuçtan o konuda bir çıkarım yapamıyoruz. buradan sonra server'da search requestlerinin alınmasıyla dönülecek datanın oluşturulması arasındaki süreyi ölçerek yola çıkacağım.

fatihtas commented 9 years ago

ben besiktasta kebap arattim simdi. 10 saniye surdu app'te.. internet hizim ~40 Mbit. biz baya baya yavasiz yani :)

ugurdonmez commented 9 years ago

bora arattigin keyword u yerini ne kadar data dondugunu yazabilir misin istatiksel olarak.

mesela istanbulda kahve aradim ??kb data ?? saniyede dondu. buna gore karsilastirma yapariz.

ugurdonmez commented 9 years ago

migrating algolia