Changeset 74


Ignore:
Timestamp:
Nov 21, 2005 5:07:18 PM (17 years ago)
Author:
bennylp
Message:

Optimization here and there, changes because of PJLIB modifications

Location:
pjproject/trunk/pjsip
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • pjproject/trunk/pjsip/build/test_pjsip.dsp

    r65 r74  
    4343# PROP Target_Dir "" 
    4444# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c 
    45 # ADD CPP /nologo /MD /W3 /Zi /O2 /I "../include" /I "../../pjlib/include" /I "../../pjlib-util/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "PJ_WIN32" /D "PJ_M_I386" /FR /FD /c 
     45# ADD CPP /nologo /MD /W3 /Zi /O2 /Ob2 /I "../include" /I "../../pjlib/include" /I "../../pjlib-util/include" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /D "PJ_WIN32" /D "PJ_M_I386" /FR /FD /c 
    4646# SUBTRACT CPP /YX 
    4747# ADD BASE RSC /l 0x409 /d "NDEBUG" 
  • pjproject/trunk/pjsip/include/pjsip/sip_parser.h

    r65 r74  
    6868{ 
    6969    PJ_DECL_LIST_MEMBER(struct pjsip_parser_err_report); 
    70     int         exception_code; /**< Error exception (e.g. PJSIP_SYN_ERR_EXCEPTION) */ 
     70    int         except_code;    /**< Error exception (e.g. PJSIP_SYN_ERR_EXCEPTION) */ 
    7171    int         line;           /**< Line number. */ 
    7272    int         col;            /**< Column number. */ 
  • pjproject/trunk/pjsip/src/pjsip-simple/event_notify.c

    r65 r74  
    337337 
    338338    } 
    339     PJ_DEFAULT { 
     339    PJ_CATCH_ANY { 
    340340        PJ_LOG(4,(THIS_FILE, "event_sub%p (%s): caught exception %d during init",  
    341341                             sub, state[sub->state].ptr, PJ_GET_EXCEPTION())); 
  • pjproject/trunk/pjsip/src/pjsip-ua/sip_dialog.c

    r65 r74  
    757757        PJ_LOG(5, (dlg->obj_name, "request data %s created", tdata->obj_name)); 
    758758    } 
    759     PJ_DEFAULT { 
     759    PJ_CATCH_ANY { 
    760760        /* Failed! Delete transmit data. */ 
    761761        if (tdata) { 
  • pjproject/trunk/pjsip/src/pjsip/sip_parser.c

    r65 r74  
    184184 
    185185/* Case insensitive comparison */ 
    186 #define parser_stricmp(str1, str2)  pj_stricmp(&str1, &str2) 
     186#define parser_stricmp(s1, s2)  (pj_stricmp_alnum(&s1, &s2)) 
    187187 
    188188 
     
    552552        msg = int_parse_msg(&context, err_list); 
    553553    }  
    554     PJ_DEFAULT { 
     554    PJ_CATCH_ANY { 
    555555        msg = NULL; 
    556556    } 
     
    581581        rdata->msg_info.msg = int_parse_msg(&context, &rdata->msg_info.parse_err); 
    582582    }  
    583     PJ_DEFAULT { 
     583    PJ_CATCH_ANY { 
    584584        rdata->msg_info.msg = NULL; 
    585585    } 
     
    657657                /* Found a valid Content-Length header. */ 
    658658                content_length = pj_strtoul(&str_clen); 
    659             }  
     659            } 
     660            PJ_CATCH_ANY { 
     661                content_length = -1; 
     662            } 
    660663            PJ_END 
    661664 
     
    692695                                         unsigned option) 
    693696{ 
    694     PJ_USE_EXCEPTION; 
    695697    pj_scanner scanner; 
    696698    pjsip_uri *uri = NULL; 
     699    PJ_USE_EXCEPTION; 
    697700 
    698701    init_sip_parser(); 
     
    703706    PJ_TRY { 
    704707        uri = int_parse_uri_or_name_addr(&scanner, pool, option); 
     708    } 
     709    PJ_CATCH_ANY { 
     710        uri = NULL; 
    705711    } 
    706712    PJ_END; 
     
    739745                                 pjsip_parser_err_report *err_list) 
    740746{ 
    741     PJ_USE_EXCEPTION; 
    742747    int ch; 
    743748    pjsip_msg *msg; 
     
    745750    pj_scanner *scanner = ctx->scanner; 
    746751    pj_pool_t *pool = ctx->pool; 
     752    PJ_USE_EXCEPTION; 
    747753 
    748754    /* Skip leading newlines. */ 
     
    801807 
    802808        } 
    803         PJ_DEFAULT { 
     809        PJ_CATCH_ANY { 
    804810            /* Exception was thrown during parsing.  
    805811             * Skip until newline, and parse next header.  
     
    816822                 
    817823                err_info = pj_pool_alloc(pool, sizeof(*err_info)); 
    818                 err_info->exception_code = PJ_GET_EXCEPTION(); 
     824                err_info->except_code = PJ_GET_EXCEPTION(); 
    819825                err_info->line = scanner->line; 
    820826                err_info->col = scanner->col; 
     
    10801086{ 
    10811087    pj_str_t scheme; 
    1082     pjsip_url *url; 
     1088    pjsip_url *url = NULL; 
    10831089    int colon; 
    10841090    int skip_ws = scanner->skip_ws; 
    1085     int hsep = '?'; 
    10861091    scanner->skip_ws = 0; 
    10871092 
     
    11151120 
    11161121    /* Get URL parameters. */ 
    1117     while ( parse_params && *scanner->curptr == ';' ) { 
     1122    if (parse_params) { 
     1123      while (*scanner->curptr == ';' ) { 
    11181124        pj_str_t pname, pvalue; 
    11191125 
     
    11441150            pj_list_insert_before(&url->other_param, p); 
    11451151        } 
     1152      } 
    11461153    } 
    11471154 
    11481155    /* Get header params. */ 
    1149     while (parse_params && *scanner->curptr == hsep) { 
     1156    if (parse_params && *scanner->curptr == '?') { 
     1157      do { 
    11501158        pjsip_param *param; 
    11511159        param = pj_pool_alloc(pool, sizeof(pjsip_param)); 
    11521160        int_parse_hparam(scanner, pool, &param->name, &param->value); 
    11531161        pj_list_insert_before(&url->header_param, param); 
    1154         hsep = '&'; 
     1162      } while (*scanner->curptr == '&'); 
    11551163    } 
    11561164 
     
    17751783 
    17761784    }  
    1777     PJ_DEFAULT { 
     1785    PJ_CATCH_ANY { 
    17781786        hdr = NULL; 
    17791787    } 
  • pjproject/trunk/pjsip/src/pjsip/sip_uri.c

    r65 r74  
    4747    const pjsip_param *p = param_list->next; 
    4848    while (p != param_list) { 
    49         if (pj_stricmp(&p->name, name)==0) 
     49        if (pj_stricmp_alnum(&p->name, name)==0) 
    5050            return p; 
    5151        p = p->next; 
  • pjproject/trunk/pjsip/src/pjsip/sip_util.c

    r65 r74  
    323323                            contact, call_id, cseq, param_text); 
    324324    } 
    325     PJ_DEFAULT { 
     325    PJ_CATCH_ANY { 
    326326        status = PJ_ENOMEM; 
    327327        goto on_error; 
     
    394394                           contact, call_id, cseq, param_text); 
    395395    } 
    396     PJ_DEFAULT { 
     396    PJ_CATCH_ANY { 
    397397        status = PJ_ENOMEM; 
    398398        goto on_error; 
  • pjproject/trunk/pjsip/src/test-pjsip/uri.c

    r65 r74  
    3030#define PARAM_CHAR  ALPHANUM MARK "[]/:&+$" 
    3131 
    32 #define POOL_SIZE       4000 
    33 #define LOOP_COUNT      1000 
     32#define POOL_SIZE       8000 
     33#define LOOP_COUNT      10000 
    3434#define AVERAGE_URL_LEN 80 
    3535#define THREAD_COUNT    4 
    3636 
    37 static pj_uint32_t parse_len; 
    38 static pj_timestamp parse_time, print_time; 
     37static pj_highprec_t parse_len, print_len, cmp_len; 
     38static pj_timestamp parse_time, print_time, cmp_time; 
    3939 
    4040 
     
    8484        PJ_SUCCESS, 
    8585        "sip:user:password@localhost:5060", 
    86         &create_uri2, 
    87     }, 
     86        &create_uri2,    }, 
    8887    { 
    8988        /* Port is specified should not match unspecified port. */ 
     
    499498    /* Parse URI text. */ 
    500499    pj_get_timestamp(&t1); 
    501     parse_len += entry->len; 
     500    parse_len = parse_len + entry->len; 
    502501    parsed_uri = pjsip_parse_uri(pool, entry->str, entry->len, 0); 
    503502    if (!parsed_uri) { 
     
    533532    s1.slen = len; 
    534533 
     534    print_len = print_len + len; 
    535535    pj_get_timestamp(&t2); 
    536536    pj_sub_timestamp(&t2, &t1); 
     
    546546 
    547547    /* Full comparison of parsed URI with reference URI. */ 
     548    pj_get_timestamp(&t1); 
    548549    status = pjsip_uri_cmp(PJSIP_URI_IN_OTHER, parsed_uri, ref_uri); 
    549550    if (status != 0) { 
     
    566567    } 
    567568 
     569    cmp_len = cmp_len + len; 
     570    pj_get_timestamp(&t2); 
     571    pj_sub_timestamp(&t2, &t1); 
     572    pj_add_timestamp(&cmp_time, &t2); 
     573 
    568574    /* Compare text. */ 
    569575    if (pj_strcmp(&s1, &s2) != 0) { 
     
    582588    pj_status_t status; 
    583589    pj_timestamp zero; 
    584     pj_highprec_t avg_parse, avg_print; 
     590    pj_time_val elapsed; 
     591    pj_highprec_t avg_parse, avg_print, avg_cmp, kbytes; 
    585592 
    586593    zero.u32.hi = zero.u32.lo = 0; 
     
    599606 
    600607    PJ_LOG(3,("", "  benchmarking...")); 
    601     parse_len = 0; 
     608    parse_len = print_len = cmp_len = 0; 
    602609    parse_time.u32.hi = parse_time.u32.lo = 0; 
    603610    print_time.u32.hi = print_time.u32.lo = 0; 
    604     pool = pjsip_endpt_create_pool(endpt, "", POOL_SIZE, POOL_SIZE); 
     611    cmp_time.u32.hi = cmp_time.u32.lo = 0; 
    605612    for (loop=0; loop<LOOP_COUNT; ++loop) { 
     613        pool = pjsip_endpt_create_pool(endpt, "", POOL_SIZE, POOL_SIZE); 
    606614        for (i=0; i<PJ_ARRAY_SIZE(uri_test_array); ++i) { 
    607615            status = do_uri_test(pool, &uri_test_array[i]); 
     
    609617                PJ_LOG(3,("uri_test", "  error %d when testing entry %d", 
    610618                          status, i)); 
     619                pjsip_endpt_destroy_pool(endpt, pool); 
    611620                goto on_return; 
    612621            } 
    613622        } 
    614     } 
    615  
     623        pjsip_endpt_destroy_pool(endpt, pool); 
     624    } 
     625 
     626    kbytes = parse_len; 
     627    pj_highprec_mod(kbytes, 1000000); 
     628    pj_highprec_div(kbytes, 100000); 
     629    elapsed = pj_elapsed_time(&zero, &parse_time); 
    616630    avg_parse = pj_elapsed_usec(&zero, &parse_time); 
    617631    pj_highprec_mul(avg_parse, AVERAGE_URL_LEN); 
     
    619633    avg_parse = 1000000 / avg_parse; 
    620634 
     635    PJ_LOG(3,("", "    %u.%u MB of urls parsed in %d.%03ds (avg=%d urls/sec)",  
     636                  (unsigned)(parse_len/1000000), (unsigned)kbytes, 
     637                  elapsed.sec, elapsed.msec, 
     638                  (unsigned)avg_parse)); 
     639 
     640    kbytes = print_len; 
     641    pj_highprec_mod(kbytes, 1000000); 
     642    pj_highprec_div(kbytes, 100000); 
     643    elapsed = pj_elapsed_time(&zero, &print_time); 
    621644    avg_print = pj_elapsed_usec(&zero, &print_time); 
    622645    pj_highprec_mul(avg_print, AVERAGE_URL_LEN); 
     
    624647    avg_print = 1000000 / avg_print; 
    625648 
    626     PJ_LOG(3,("", "   done. Average parse=%d url/sec, print=%d url/sec", 
    627                   (unsigned)avg_parse, (unsigned)avg_print)); 
     649    PJ_LOG(3,("", "    %u.%u MB of urls printed in %d.%03ds (avg=%d urls/sec)",  
     650                  (unsigned)(print_len/1000000), (unsigned)kbytes, 
     651                  elapsed.sec, elapsed.msec, 
     652                  (unsigned)avg_print)); 
     653 
     654    kbytes = cmp_len; 
     655    pj_highprec_mod(kbytes, 1000000); 
     656    pj_highprec_div(kbytes, 100000); 
     657    elapsed = pj_elapsed_time(&zero, &cmp_time); 
     658    avg_cmp = pj_elapsed_usec(&zero, &cmp_time); 
     659    pj_highprec_mul(avg_cmp, AVERAGE_URL_LEN); 
     660    pj_highprec_div(avg_cmp, cmp_len); 
     661    avg_cmp = 1000000 / avg_cmp; 
     662 
     663    PJ_LOG(3,("", "    %u.%u MB of urls compared in %d.%03ds (avg=%d urls/sec)",  
     664                  (unsigned)(cmp_len/1000000), (unsigned)kbytes, 
     665                  elapsed.sec, elapsed.msec, 
     666                  (unsigned)avg_cmp)); 
    628667 
    629668    PJ_LOG(3,("", "  multithreaded test")); 
     
    631670 
    632671on_return: 
    633     pjsip_endpt_destroy_pool(endpt, pool); 
    634672    return status; 
    635673} 
Note: See TracChangeset for help on using the changeset viewer.