Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

61
LINES

< > BotCompany Repo | #1033318 // Count in 50% of a core v1

JavaX source code (desktop) [tags: use-pretranspiled] - run with: x30.jar

Download Jar. Libraryless. Click here for Pure Java version (5956L/33K).

!7

set flag LeanMode. set flag OurSyncCollections. set flag collectionMutex_simple.
//do not include class Symbol.
set flag SymbolAsString.
//do not include function getOpt.

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);

p/*-exp*/ { // exp for "experiment" automatically reloads on updates
  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" {
    temp tempSetPingSource(myPingSource);
    new Timestamp start;
    
    long i = 0;
    var ping = pingSource();
    while (true) {
      if (ping_trueIfSlept(ping)) {
        result = i;
        if (nto!) {
          Seconds cpu = new(nanosToSeconds(currentThreadTotalCPUNanos()));
          Seconds clock = new(elapsedSeconds(start));
          double numbersPerSecond = doubleRatio(i, clock!);
          print("I have counted until " + n2(i) + ". pid=" + pid() + ", cpu time: " + cpu + " (clock: " + clock
            + ", ratio: " + formatDouble1(doublePercentRatio(cpu, clock)) + "%) - "
            + n2(ifloor(numbersPerSecond)) + " numbers per second");
        }
      }
      
      ++i;
    }
  }
  schedule.run();
}

download  show line numbers  debug dex  old transpilations   

Travelled to 2 computer(s): bhatertpkbcr, mqqgnosmbjvj

No comments. add comment

Snippet ID: #1033318
Snippet name: Count in 50% of a core v1
Eternal ID of this version: #1033318/50
Text MD5: 8a990009982d37c85a5c85afa95c2063
Transpilation MD5: 1689f87ad8e7fc11e38b108ff49063e1
Author: stefan
Category: javax / gazelle v
Type: JavaX source code (desktop)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2021-10-24 18:52:37
Source code size: 1710 bytes / 61 lines
Pitched / IR pitched: No / No
Views / Downloads: 420 / 1399
Version history: 49 change(s)
Referenced in: #1033348 - Count as fast as I can using only 50% of one core