com.sun.electric.util.memory.Memory Maven / Gradle / Ivy
The newest version!
/* -*- tab-width: 4 -*-
*
* Electric(tm) VLSI Design System
*
* File: Memory.java
*
* Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
*
* Electric(tm) is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* Electric(tm) is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Electric(tm); see the file COPYING. If not, write to
* the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
* Boston, Mass 02111-1307, USA.
*/
package com.sun.electric.util.memory;
import java.text.DecimalFormat;
public class Memory {
public enum MemSize {
none(1, "B"), kilo(1024, "kB"), mega(1024 * 1024, "MB"), giga(1024 * 1024 * 1024, "GB");
private int value;
private String entity;
private MemSize(int value, String entity) {
this.value = value;
this.entity = entity;
}
public MemSize enlarge() {
for (MemSize tmp : MemSize.values()) {
if (tmp.value == (this.value * 1024)) {
return tmp;
}
}
return this;
}
public MemSize ensmall() {
for (MemSize tmp : MemSize.values()) {
if (tmp.value == (this.value / 1024)) {
return tmp;
}
}
return this;
}
public static MemSize getBestMemSize(Long memory) {
MemSize result = MemSize.none;
double minimum = Double.MAX_VALUE;
for (MemSize tmp : MemSize.values()) {
double value = (double) memory / (double) tmp.value;
if (value >= 1.0 && Math.min(minimum, value) == value) {
result = tmp;
}
}
return result;
}
public static double getBestMemSizeValue(Long memory, MemSize bestMemSize) {
double value = 0.0;
value = (double)memory / (double)bestMemSize.value;
return value;
}
}
public static String formatMemorySize(long memorySizeBytes) {
StringBuilder builder = new StringBuilder();
MemSize best = MemSize.getBestMemSize(memorySizeBytes);
double value = MemSize.getBestMemSizeValue(memorySizeBytes, best);
DecimalFormat df = new DecimalFormat("##.#");
builder.append(df.format(value));
builder.append(best.entity);
return builder.toString();
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy