Deutsch English Français Italiano |
<vsood1$3ijij$1@dont-email.me> View for Bookmarking (what is this?) Look up another Usenet article |
Path: ...!news.tomockey.net!news.samoylyk.net!weretis.net!feeder9.news.weretis.net!news.quux.org!eternal-september.org!feeder3.eternal-september.org!news.eternal-september.org!eternal-september.org!.POSTED!not-for-mail From: aotto1968 <aotto1968@t-online.de> Newsgroups: comp.lang.tcl Subject: TCL PERFORMANCE : how to rid of 'Tcl_EvalObjv' with the 'NRE' stuff Date: Fri, 4 Apr 2025 15:55:45 +0200 Organization: A noiseless patient Spider Lines: 61 Message-ID: <vsood1$3ijij$1@dont-email.me> MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit Injection-Date: Fri, 04 Apr 2025 15:55:45 +0200 (CEST) Injection-Info: dont-email.me; posting-host="011f5b117284e035a314a433ade3cc64"; logging-data="3755603"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX18ihMQN+H838aBA5brLajby6sXLBFB2Dyg=" User-Agent: Mozilla Thunderbird Cancel-Lock: sha1:dWVjosR1S8NzsOInxMu6A44D6JM= Content-Language: en-US Bytes: 3774 I'm in the phase of optimization of the new ATL tcl dialect using "myoo" OO extension and right now I'm fight to get PYTHON speed for an EMPTY callback. → The CORE problem is the "Tcl_EvalObjv" which is TO SLOW to beat python. exec[#7] -> '.../release/example/c/perfclient' '--send-nothing' '--sec' '10' '@' 'python3' '.../example/py/perfserver.py' ....:PerfClientExec }: start ------------------------ : result [ count / sec ] ....:statistics }: --send-nothing : 504821.1 [ 5048489 / 10.000551 ] ^^^^^^^^^^^^^^^^^^^^^ ....:PerfClientExec }: end: ---------------------------------------- exec[#7] -> '.../release/example/c/perfclient' '--send-nothing' '--sec' '10' '@' 'tclsh8.6' '.../example/atl/perfserver.atl' ....:PerfClientExec }: start ------------------------ : result [ count / sec ] ....:statistics }: --send-nothing : 453027.1 [ 4530432 / 10.000355 ] ^^^^^^^^^^^^^^^^^^^^^ ....:PerfClientExec }: end: ---------------------------------------- → The CORE problem is the "NRE" which eats the performance *---------------------------------------------------------------------- * * Tcl_EvalObjv -- * * This function evaluates a Tcl command that has already been parsed * into words, with one Tcl_Obj holding each word. * * Results: * The return value is a standard Tcl completion code such as TCL_OK or * TCL_ERROR. A result or error message is left in interp's result. * * Side effects: * Always pushes a callback. Other side effects depend on the command. * *---------------------------------------------------------------------- */ int Tcl_EvalObjv( Tcl_Interp *interp, /* Interpreter in which to evaluate the * command. Also used for error reporting. */ int objc, /* Number of words in command. */ Tcl_Obj *const objv[], /* An array of pointers to objects that are * the words that make up the command. */ int flags) /* Collection of OR-ed bits that control the * evaluation of the script. Only * TCL_EVAL_GLOBAL, TCL_EVAL_INVOKE and * TCL_EVAL_NOERR are currently supported. */ { int result; NRE_callback *rootPtr = TOP_CB(interp); result = TclNREvalObjv(interp, objc, objv, flags, NULL); return TclNRRunCallbacks(interp, result, rootPtr); } → Is there a possible to get an "Tcl_EvalObjvEx" as striped version of all the NRE stuff? mfg.