00:00:00 --- log: started forth/19.08.06 00:01:11 --- join: xek (~xek@apn-31-0-23-82.dynamic.gprs.plus.pl) joined #forth 00:03:52 --- quit: xek (Remote host closed the connection) 00:25:38 --- quit: dys (Ping timeout: 244 seconds) 00:33:48 --- join: dave0 (~dave0@069.d.003.ncl.iprimus.net.au) joined #forth 00:39:25 --- quit: karswell (Remote host closed the connection) 00:40:29 --- join: karswell (~user@cust125-dsl91-135-5.idnet.net) joined #forth 01:06:53 --- join: dys (~dys@2003:5b:203b:100:a64c:c8ff:fef4:13a6) joined #forth 01:11:36 --- quit: Keshl (Read error: Connection reset by peer) 01:12:13 --- join: Keshl (~Purple@207.44.70.214.res-cmts.gld.ptd.net) joined #forth 01:50:18 --- join: kori (~kori@2804:14c:85a3:81b8::1000) joined #forth 01:50:18 --- quit: kori (Changing host) 01:50:18 --- join: kori (~kori@arrowheads/kori) joined #forth 01:56:49 --- quit: kori (Ping timeout: 264 seconds) 02:34:49 --- join: kori (~kori@187.123.3.51) joined #forth 02:34:49 --- quit: kori (Changing host) 02:34:49 --- join: kori (~kori@arrowheads/kori) joined #forth 02:45:40 --- quit: kori (Read error: Connection reset by peer) 03:07:42 --- join: kori (~kori@arrowheads/kori) joined #forth 03:27:10 --- quit: kori (Read error: Connection reset by peer) 03:48:25 --- join: kori (~kori@arrowheads/kori) joined #forth 03:50:20 --- quit: kori (Read error: Connection reset by peer) 03:53:36 --- join: dddddd (~dddddd@unaffiliated/dddddd) joined #forth 04:12:56 --- join: kori (~kori@arrowheads/kori) joined #forth 07:25:56 --- quit: tabemann (Ping timeout: 276 seconds) 08:02:06 --- quit: cheater (Read error: Connection reset by peer) 08:09:30 --- join: cheater (~cheater@unaffiliated/cheater) joined #forth 08:19:36 remexre: Well the high level words are just Russian nesting dolls. You could replace the assembled core wordset with words of the same names that only add their corresponding cpu cycle count to that of the previous/adjacent codeword ( e.g. : c, 2 + ; ). Then, just load the high level forth source code on top. That would get the number of cpu cycles of the code without actually timing it directly. 08:21:11 remexre: not unlike how Chuck Moore characterizes timing of chip designs https://hub.darcs.net/pointfree/forth-eda-cm-portable/browse 08:22:02 https://hub.darcs.net/pointfree/forth-eda-cm-portable/raw-file/A_Language_for_Digital_Design.pdf 09:06:09 --- quit: dave0 (Quit: dave's not here) 09:06:43 pointfree: I'll check those links in a bit, thanks! By previous, I'm assuming you mean "previous stackframe"? Don't I lose stack traces then? 09:07:12 I'm actually largely looking for sequences I should fuse to make new code words 09:25:37 --- join: ryke (~Thunderbi@71-9-169-152.dhcp.jcsn.tn.charter.com) joined #forth 09:43:26 remexre: The lowest level core codewords ( written in assembly ) are executed one after the other, contiguously. I think of high level words as just concatenating references to codewords and appending that to the dictionary. 09:43:26 Only the lowest level of this diagram is executed so to speak. The higher levels are just subroutine calls. https://1scyem2bunjw1ghzsf1cjwwn-wpengine.netdna-ssl.com/wp-content/uploads/2015/03/ch9-dinner-exit.gif 09:43:26 You'd need to choose the user inputs at profiling time for this to work with loops and conditionals. 09:43:26 You could also print out each execution path : if 3 + dup . ; : else 2 + dup . ; : then 1 + dup . ; : a 4 + ; : b 5 + ; : c 6 + ; 0 a if a b else b c then 09:50:20 yeah, i'd probably be profiling a live system 09:51:13 I might go with printing out the execution path; printing out the code word address at the start of code words, and the pfa address for docolon words should be close to sufficient 11:11:13 --- quit: dys (Ping timeout: 264 seconds) 11:44:52 --- join: dys (~dys@tmo-106-99.customers.d1-online.com) joined #forth 12:37:53 --- quit: gravicappa (Ping timeout: 245 seconds) 13:17:44 remexre: which chip is this on? 13:22:35 amd64 CPU :P in theory later on other cpus 13:27:40 --- join: gravicappa (~gravicapp@h109-187-199-149.dyn.bashtel.ru) joined #forth 13:29:43 --- quit: dys (Ping timeout: 268 seconds) 14:03:57 remexre: what about using some form of performance counter when an execution token is hit? 14:04:53 alex4nder:like every XT? 14:05:12 sure, or whatever you want to profile/count 14:05:39 it depends how your inner interpreter/next/exit is written 14:07:37 --- join: dys (~dys@tmo-116-29.customers.d1-online.com) joined #forth 14:18:38 --- quit: karswell (Read error: Connection reset by peer) 14:19:37 --- join: karswell (~user@cust125-dsl91-135-5.idnet.net) joined #forth 14:34:09 --- quit: gravicappa (Ping timeout: 245 seconds) 14:40:17 NEXT is `lodsq; jmp rax` EXIT is `mov rsi, [rbp]; add rbp, 8` 14:40:24 but I guess what I really want to find is 14:41:00 a) what're the most time-consuming "di-/tri-/n-grams" 14:41:17 b) how much time can I shave off by CODEing them 14:51:50 remexre: A good way to test that: Make a benchmark, time how fast it run with different operations, shave off time with CODE, see how much it improves. 14:51:57 *runs 14:53:03 Sure, that's b, which is the easy one :) 14:55:00 --- quit: karswell (Remote host closed the connection) 14:55:43 It's also the a). Just write a loop that does one operation on a word again and again, time it, try with all possible words. 14:56:09 Huh? 14:56:28 I guess I mean, what're the ones that the most execution time is spent on 14:58:59 So if foo takes 1k cycles (eg my csprng) but only gets called a handful of times, that gets ranked as less than a million executions of 1 + that take 10 cycles each 15:00:08 Ah. 15:00:44 Hmm, I guess it kinda depends on the code you are running. When your code accesses the csprng all the time, it might be a bottleneck, else it might be totally fine. 15:02:32 Yeah, I've got a few benchmarkish programs I'd be profiling 15:28:44 --- quit: ryke (Ping timeout: 245 seconds) 16:38:17 --- quit: john_cephalopoda (Ping timeout: 250 seconds) 16:51:45 --- join: john_cephalopoda (~john@unaffiliated/john-cephalopoda/x-6407167) joined #forth 17:04:10 --- join: tabemann (~tabemann@rrcs-162-155-170-75.central.biz.rr.com) joined #forth 17:47:31 --- quit: tabemann (Read error: Connection reset by peer) 17:49:05 --- quit: Keshl (Read error: Connection reset by peer) 17:49:28 --- join: Keshl (~Purple@207.44.70.214.res-cmts.gld.ptd.net) joined #forth 19:25:00 --- quit: dddddd (Remote host closed the connection) 19:25:31 --- join: karswell (~user@cust125-dsl91-135-5.idnet.net) joined #forth 19:27:12 --- join: X-Scale` (~ARM@83.223.243.152) joined #forth 19:28:37 --- quit: X-Scale (Ping timeout: 268 seconds) 19:28:41 --- nick: X-Scale` -> X-Scale 20:41:56 --- join: gravicappa (~gravicapp@h109-187-199-149.dyn.bashtel.ru) joined #forth 21:47:17 --- join: ryke (~Thunderbi@71-9-169-152.dhcp.jcsn.tn.charter.com) joined #forth 23:59:59 --- log: ended forth/19.08.06