Changeset 831848e


Ignore:
Timestamp:
Jun 8, 2011 8:11:28 AM (9 years ago)
Author:
dev <dev@…>
Branches:
master
Children:
3a5347f
Parents:
9f9e44b
Message:

Added caching for doCPUID

File:
1 edited

Legend:

Unmodified
Added
Removed
  • core/java/src/freenet/support/CPUInformation/CPUID.java

    r9f9e44b r831848e  
    1010import java.io.InputStream;
    1111import java.net.URL;
     12import java.util.HashMap;
    1213
    1314import net.i2p.I2PAppContext;
    1415import net.i2p.util.FileUtil;
     16
    1517
    1618/**
     
    5557    private static final boolean isSunos = System.getProperty("os.name").toLowerCase().contains("sunos");
    5658   
     59        private static final HashMap<Integer,CPUIDResult> cpuidCache = new HashMap<Integer,CPUIDResult>();     
     60
    5761    /**
    5862     * This isn't always correct.
     
    9599    private static native CPUIDResult doCPUID(int iFunction);
    96100
     101        private static CPUIDResult cachedCPUID(int iFunction)
     102        {
     103                CPUIDResult cachedCPUID = cpuidCache.get(iFunction);
     104                if (cachedCPUID != null)
     105                        return cachedCPUID;
     106                else {
     107                        CPUIDResult c = doCPUID(iFunction);
     108                        cpuidCache.put(iFunction,c);
     109                        return c;
     110                }
     111        }
     112
    97113    private static String getCPUVendorID()
    98114    {
    99         CPUIDResult c = doCPUID(0);
     115        CPUIDResult c = cachedCPUID(0);
    100116        StringBuilder sb= new StringBuilder(13);
    101117        sb.append((char)( c.EBX        & 0xFF));
     
    118134    private static int getCPUFamily()
    119135    {
    120         CPUIDResult c = doCPUID(1);
     136        CPUIDResult c = cachedCPUID(1);
    121137        return (c.EAX >> 8) & 0xf;
    122138    }
    123139    private static int getCPUModel()
    124140    {
    125         CPUIDResult c = doCPUID(1);
     141        CPUIDResult c = cachedCPUID(1);
    126142        return (c.EAX >> 4) & 0xf;
    127143    }
    128144    private static int getCPUExtendedModel()
    129145    {
    130         CPUIDResult c = doCPUID(1);
     146        CPUIDResult c = cachedCPUID(1);
    131147        return (c.EAX >> 16) & 0xf;
    132148    }
    133149    private static int getCPUType()
    134150    {
    135         CPUIDResult c = doCPUID(1);
     151        CPUIDResult c = cachedCPUID(1);
    136152        return (c.EAX >> 12) & 0xf;
    137153    }
    138154    private static int getCPUExtendedFamily()
    139155    {
    140         CPUIDResult c = doCPUID(1);
     156        CPUIDResult c = cachedCPUID(1);
    141157        return (c.EAX >> 20) & 0xff;
    142158    }
    143159    private static int getCPUStepping()
    144160    {
    145         CPUIDResult c = doCPUID(1);
     161        CPUIDResult c = cachedCPUID(1);
    146162        return c.EAX & 0xf;
    147163    }
    148164    private static int getEDXCPUFlags()
    149165    {
    150         CPUIDResult c = doCPUID(1);
     166        CPUIDResult c = cachedCPUID(1);
    151167        return c.EDX;
    152168    }
    153169    private static int getECXCPUFlags()
    154170    {
    155         CPUIDResult c = doCPUID(1);
     171        CPUIDResult c = cachedCPUID(1);
    156172        return c.ECX;
    157173    }
    158174    private static int getExtendedEDXCPUFlags()
    159175    {
    160         CPUIDResult c = doCPUID(0x80000001);
     176        CPUIDResult c = cachedCPUID(0x80000001);
    161177        return c.EDX;
    162178    }
    163179    private static int getExtendedECXCPUFlags()
    164180    {
    165         CPUIDResult c = doCPUID(0x80000001);
     181        CPUIDResult c = cachedCPUID(0x80000001);
    166182        return c.ECX;
    167183    }
Note: See TracChangeset for help on using the changeset viewer.