Download Jar. Libraryless. Click here for Pure Java version (7512L/42K).
!7 // Now with processor GHz estimate set flag LeanMode. set flag OurSyncCollections. set flag collectionMutex_simple. set flag SymbolAsString. sbool ping() { ret ping_v3(); } static new PingSource myPingSource; static double coresToUse = .5; static double frequency = 100; static new BoolVar on; static volatile long result; static NotTooOften nto = nto(1.0); sclass Counter { new Timestamp start; run { temp tempSetPingSource(myPingSource); loop(); } void loop { long i = 0; var ping = pingSource(); while (true) { if (ping_trueIfSlept(ping)) { result = i; if (nto!) printStats(); } ++i; } } void printStats { Seconds cpu = new(nanosToSeconds(currentThreadTotalCPUNanos())); Seconds clock = new(elapsedSeconds(start)); double cpuRatio = doubleRatio(cpu, clock); double numbersPerSecond = doubleRatio(result, clock!); double npsPerCore = doubleRatio(numbersPerSecond, cpuRatio); double nsPerNumber = doubleRatio(oneBillion(), npsPerCore); double assumedCycles = 2; Freq speedEstimate = new(assumedCycles*npsPerCore); print("I have counted until " + n2(result) + ". pid=" + pid() + ", cpu time: " + cpu + " (clock: " + clock + ", ratio: " + formatDouble1(cpuRatio*100) + "%) - " + n2(lfloor(numbersPerSecond)) + " numbers per second = " + n2(lfloor(npsPerCore)) + " numbers per second per core = " + formatDouble1(nsPerNumber) + " ns per number" + " => Processor speed estimate: " + speedEstimate.format1()); } } p { new Schedule<Runnable> schedule; //enableScaffolding(schedule); schedule.add(0, r { dontprint("on"); myPingSource.action(null); on.set(); }); schedule.add(coresToUse, r { dontprint("off"); on.unset(); myPingSource.action(-> { temp tempPingPrivileged(); on.waitUntilTrue(); true; }); }); schedule.jumpFromTo(1, 0); schedule.speedUp(frequency); //printStruct(schedule); thread "Counting" { new Counter().run(); } schedule.run(); }
Began life as a copy of #1033318
download show line numbers debug dex old transpilations
Travelled to 2 computer(s): bhatertpkbcr, mqqgnosmbjvj
No comments. add comment
Snippet ID: | #1033348 |
Snippet name: | Count as fast as I can using only 50% of one core |
Eternal ID of this version: | #1033348/15 |
Text MD5: | 905075fa03ff503bb63bcd03651124af |
Transpilation MD5: | f74276c187b6f2ec59953af04162bc25 |
Author: | stefan |
Category: | javax |
Type: | JavaX source code (desktop) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2021-10-25 02:52:49 |
Source code size: | 2159 bytes / 80 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 344 / 961 |
Version history: | 14 change(s) |
Referenced in: | [show references] |