public String toString()

in Extremem/src/main/java/com/amazon/corretto/benchmark/extremem/HighResolutionTime.java [94:207]


  public String toString(ExtrememThread t) {
    final int NanosPerSecond = 1000000000;
    final long SecondsPerHour = 60 * 60;
    final long SecondsPerMinute = 60;
    final int NanosPerMilliseconds = 1000000;
    final int NanosPerMicroseconds = 1000;
    
    long seconds = this.s;
    int nanos = this.ns;
    String result;
    int sb_length;

    if (seconds < 0) {
      result = "-";
      seconds = -seconds;
      nanos = NanosPerSecond - nanos;
      sb_length = 1;
    } else {
      result = "";
      sb_length = 0;
    }
    int sb_capacity = Util.ephemeralStringBuilder(t, sb_length);

    if (seconds >= SecondsPerHour) {
      long hours = seconds / SecondsPerHour;
      seconds %= SecondsPerHour;
      int digits = Util.decimalDigits(hours);
      sb_capacity = Util.ephemeralStringBuilderAppend(t, sb_length,
                                                      sb_capacity, digits);
      sb_length += digits;

      result = result + hours + "h ";
      sb_capacity = Util.ephemeralStringBuilderAppend(t, sb_length,
                                                      sb_capacity, 2);
      sb_length += 2;
    }
    if (seconds >= SecondsPerMinute) {
      long minutes = seconds / SecondsPerMinute;
      int digits = Util.decimalDigits(minutes);
      result = result + minutes + "m ";
      seconds %= SecondsPerMinute;
      
      sb_capacity = Util.ephemeralStringBuilderAppend(t, sb_length,
                                                      sb_capacity, digits);
      sb_length += digits;
      sb_capacity = Util.ephemeralStringBuilderAppend(t, sb_length,
                                                      sb_capacity, 2);
      sb_length += 2;
    }
    if (seconds > 0) {
      int digits = Util.decimalDigits(seconds);
      result = result + seconds + "s ";

      sb_capacity = Util.ephemeralStringBuilderAppend(t, sb_length,
                                                      sb_capacity, digits);
      sb_length += digits;
      sb_capacity = Util.ephemeralStringBuilderAppend(t, sb_length,
                                                      sb_capacity, 2);
      sb_length += 2;
    }

    if (nanos >= NanosPerMilliseconds) {
      int millis = nanos / NanosPerMilliseconds;
      int digits = Util.decimalDigits(millis);

      result = result + millis + "ms ";
      nanos %= NanosPerMilliseconds;
      
      sb_capacity = Util.ephemeralStringBuilderAppend(t, sb_length,
                                                      sb_capacity, digits);
      sb_length += digits;
      sb_capacity = Util.ephemeralStringBuilderAppend(t, sb_length,
                                                      sb_capacity, 3);
      sb_length += 3;
    }
    if (nanos >= NanosPerMicroseconds) {
      int us = nanos / NanosPerMicroseconds;
      int digits = Util.decimalDigits(us);
      result = result + us + "us ";
      nanos %= NanosPerMicroseconds;

      sb_capacity = Util.ephemeralStringBuilderAppend(t, sb_length,
                                                      sb_capacity, digits);
      sb_length += digits;
      sb_capacity = Util.ephemeralStringBuilderAppend(t, sb_length,
                                                      sb_capacity, 3);
      sb_length += 3;
    }
    if (nanos > 0) {
      int digits = Util.decimalDigits(nanos);
      result = result + nanos + "ns ";

      sb_capacity = Util.ephemeralStringBuilderAppend(t, sb_length,
                                                      sb_capacity, digits);
      sb_length += digits;
      sb_capacity = Util.ephemeralStringBuilderAppend(t, sb_length,
                                                      sb_capacity, 3);
      sb_length += 3;
    }

    if (result.length() == 0) {
      Util.abandonEphemeralStringBuilder(t, sb_length, sb_capacity);

      // Allocate String so that it can be consistently garbage collected.
      Util.ephemeralString(t, 2);
      return new String("0s");
    }
    else {
      // Assume compiler optimizes this (so there's not a String
      // followed by a substring operation).
      Util.ephemeralStringBuilderToString(t, sb_length - 1, sb_capacity);
      return result.substring(0, result.length() - 1);
    }
  }