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

65
LINES

< > BotCompany Repo | #1002402 // Timing Bot

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

Libraryless. Click here for Pure Java version (1549L/10K/35K).

1  
!752
2  
3  
// Our version of the #1002317's Bot class, just for querying.
4  
// Thanks to the magic of restructure(), it will be filled
5  
// automagically.
6  
static class Bot {
7  
  S id; // always formatted
8  
  boolean enabled, always;
9  
}
10  
11  
answer {
12  
  if (swic(s, "timing ")) {
13  
    S input = dropPrefix("timing ", s);
14  
    O dispatcher = call(getMainBot(), "getDispatcher");
15  
    L bots = cast call(dispatcher, "getSubBots");
16  
    new L<S> l;
17  
    long startTime = now();
18  
    for (int i = 0; i < l(bots); i++) {
19  
      Bot bot = null;
20  
      time {}
21  
      try {
22  
        bot = (Bot) restructure(bots.get(i));
23  
        if (!bot.enabled) {
24  
          l.add(bot.id + ": Not enabled");
25  
          continue;
26  
        }
27  
        if (sameSnippetID(bot.id, getProgramID()))
28  
          continue; // skip myself
29  
        Class c = cast call(dispatcher, "getClassOfSubBot", bot.id);
30  
        if (c != null) {
31  
          S a = null;
32  
          time {
33  
            a = callStaticAnswerMethod(c, input);
34  
          }
35  
          if (empty(a))
36  
            l.add(bot.id + ": " + lastTiming() + " ms - \"\"");
37  
          else {
38  
            l.add(bot.id + ": " + lastTiming() + " ms - RETURN " + quote(a));
39  
            informAlwaysBots(dispatcher, subList(bots, i+1), input, l);
40  
            break;
41  
          }
42  
        }
43  
      } catch(Exception e) { l.add(exceptionToUser(e)); }
44  
    }
45  
46  
    l.add("Total: " + (now()-startTime) + " ms");
47  
    ret "```" + fromLines(l) + "```";
48  
  }
49  
}
50  
51  
static void informAlwaysBots(O dispatcher, L<Bot> bots, S s, L<S> l) {
52  
  for (O _bot : bots) {
53  
    Bot bot = (Bot) restructure(_bot);
54  
    if (bot.always) pcall { // TODO: print exception
55  
      Class c = cast call(dispatcher, "getClassOfSubBot", bot.id);
56  
      if (c != null) {
57  
        S a = null;
58  
        time {
59  
          a = callStaticAnswerMethod(c, s);
60  
        }
61  
        l.add(bot.id + " (always): " + lastTiming() + " ms - " + quote(a));
62  
      }
63  
    }
64  
  }
65  
}

download  show line numbers  debug dex  old transpilations   

Travelled to 13 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt

No comments. add comment

Snippet ID: #1002402
Snippet name: Timing Bot
Eternal ID of this version: #1002402/1
Text MD5: 13ba340c7b61a6eb0e1232b895eaf913
Transpilation MD5: bd863038e47c5030607adb4e8d8e5f20
Author: stefan
Category: javax
Type: JavaX source code
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2016-04-14 19:27:00
Source code size: 1947 bytes / 65 lines
Pitched / IR pitched: No / No
Views / Downloads: 828 / 1573
Referenced in: [show references]