BTW you an also use this "split" trick to remove dupes (although you lose the order of the word list):
function stripDupes pWordList split pWordList by cr and tab return (the keys of pWordList) end stripDupes on mouseUp put stripDupes("test" & cr & "ball" & cr & "test" & cr & "orange") end mouseUp Result: ball orange test Not sure if it's faster, but it may work in your situation, Ken > On Mar 3, 2022, at 2:28 PM, J. Landman Gay via use-livecode > <use-livecode@lists.runrev.com> wrote: > > On 3/3/22 12:53 AM, Mark Waddingham via use-livecode wrote: >> If the difference between `the milliseconds` before the loop, and then after >> is 0 or 1 millisecond - then that is how long it is taking. This means the >> issue is somewhere else. Are you sure there isn't anything you are doing >> either before that loop or after that loop which doesn't wait for ages (due >> to the ANRs you mentioned). > > Today I'm getting slightly faster results. Repeatedly creating new boards is > not slowing down. Maybe some background processes were stopped (there was a > system update last night.) > > The scoring handler does three things with the user word list, calling out to > 3 different handlers: > 1. Remove any duplicates > 2. Check the dicionary for the remaining words > 3. Walk the board for each word to ensure it's a legal path > > I just ran tests with LC 9.6.6 on a Pixel 5 that timed each callout > independently. Times are in milliseconds. No words were longer than 4 letters. > > Dupes Dictionary Boardwalk word counts > 12 1954 1404 -- 5 wds + 2 dupes, 2 illegals (total 9) > 1 1934 2542 -- 9 wds, all legal > 0 1960 1966 -- 7 wds + 2 illegals (total 9) > 0 1921 1142 -- 4 wds, all legal > 17 2015 8321 -- 30 wds + 1 dupe, 1 illegal (total 32) > > My recursive board walk could probably be optimized but for now I'm just > focusing on the dictionary lookup. For reference, here is the whole handler: > > function checkDictionary pList -- plist is the user words > repeat for each line l in pList > if sDictFile[l] = true then put l & cr after tCheckedList > else put l & cr after tNonWords > wait 0 with messages -- prevent ANRs > end repeat > set wholematches to true > put fld "wordList" into tWList -- no longer the same as pList since > removeDupes has already run > repeat for each line l in tNonWords -- mark non-words in list > set the textcolor of line lineoffset(l,tWList) of fld "wordList" to "red" > end repeat > if tNonWords <> "" then put tNonWords into sStats["unknowns"] -- for later > display > return tCheckedList > end checkDictionary > > I suppose the delay could be updating the field? But updating a field for 2 > or 3 entries shouldn't take too long, should it? Also note that in the 2 runs > where there were no illegals, the timings didn't vary much. The checkDupes > handler also colorizes duplicate words, which is why those 2 runs have longer > times. > >> If there are only 3 reasonable length words in pList (I.e. 3 lines) then >> there's no way that loop can take 4 seconds. > > When testing I don't have patience to think, so all words are usually 3-4 > letters each. > > >>> Even stranger: on my cheapo Android tablet with 4 megs of RAM running >>> Android 9 the response is nearly instantaneous, even if the user list >>> has 200+ words. On my Pixel phone with 8 megs of RAM and Android 12 >>> the response is slow enough to trigger the ANR with only 3 words. I'm >>> building for ARM 64. >> This strongly suggests it is something else either on your phone, or in your >> code which your phone doesn't like I think. > > I have two Pixels, a 5 and a 6, and they both behave the same (slow) way, > though the 6 has the new Tensor chip. Yesterday I was wondering if the delay > isn't the calculations but rather the screen redraws. I have a lot of > controls stacked up on the card, though many are not visible. However, I've > run the handlers with the screen both locked and unlocked with no changes. > > -- > Jacqueline Landman Gay | jac...@hyperactivesw.com > HyperActive Software | http://www.hyperactivesw.com > > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode Ken Ray Sons of Thunder Software, Inc. Email: k...@sonsothunder.com Website: https://www.sonsothunder.com _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode