Performance: Ziehen ohne Zurücklegen (große Datenmenge)

Status
Nicht offen für weitere Antworten.

pocketom

Bekanntes Mitglied
Hi.

Ich habe mal wieder ein Performance Problem. Und zwar möchte ich ein Array in zwei Teile splitten. Das soll zufällig geschehen. Es ist also "Ziehen ohne Zurücklegen" angesagt. Das funktioniert bis zu einer Arraygröße von 100.000 ganz gut, darüber wird es dann aber immer haariger. Aktuell muss ich ca. 5 Mio. Zellen in zwei Teile splitten.



Die Größe des ersten Teils wird angegeben (0-100%), der zweite Teil ist komplementär.

Code:
/**
	 * splits an array into two parts by drawing random values
	 * 
	 * @param data the input 2D array of doubles
	 * @param part1percentage the percentage to put into the first 2D array,
	 * the rest is put into the second array
	 * 
	 * @return a list containing the two splitted parts (List(0) = training, List(1) = validation)
	 */
	public static List<double[][]> splitArrayRandomly(double[][] data, double part1percentage)
	{		
		if(part1percentage > 1)
			part1percentage = 1.0;
		else if(part1percentage < 0)
			part1percentage = 0.0;
				
		int tcount = (int)(data.length * part1percentage);
		int vcount = data.length -tcount;
		
		double[][] tpatterns = new double[tcount][data[0].length];
		double[][] vpatterns = new double[vcount][data[0].length];
			
    	ArrayList<Integer> availablepatterns = new ArrayList<Integer>();   	
    	for(int i=0; i<data.length; i++)
    		availablepatterns.add(i);    	
	
    	
    	Random randomizer = new Random(System.nanoTime());   	
    	int available,r,rpattern = 0;  	
    	
    	// fetch the first part
    	int count = 1;
    	for(int i=0; i<tpatterns.length; i++)
    	{	
    		if(count%100==0)
    			System.out.print(count+"\t");
    		
    		if(count%1000==0)
    			System.out.println();
    		
    		available = availablepatterns.size();
    		r = randomizer.nextInt(available);   		
    		rpattern = availablepatterns.get(r);  		   		
    		availablepatterns.remove(r);
    		
    		for (int j = 0; j < data[0].length; j++)		
    			tpatterns[i][j] = data[rpattern][j];
    		
    		count++;
    	}   
    	
    	// fetch the second part
    	count = 1;
    	for(int i=0; i<vpatterns.length; i++)
    	{	
    		if(count%100==0)
    			System.out.print(count+"\t");
    		
    		if(count%1000==0)
    			System.out.println();
    		
    		available = availablepatterns.size();
    		r = randomizer.nextInt(available);
    		rpattern = availablepatterns.get(r);
    		availablepatterns.remove(r);
    		
    		for (int j = 0; j < data[0].length; j++)		
    			vpatterns[i][j] = data[rpattern][j];
    		
    		count++;
    	} 
    	
    	ArrayList<double[][]> result = new ArrayList<double[][]>();
    	
    	result.add(tpatterns);
    	result.add(vpatterns);   	
    	
    	return result;
	}


Habe es mit hashen auch probiert, das geht am Anfang dann schnell und zum Ende hin immer langsamer, also genau umgekehrt weil zum Ende hin immer öfter "ins Leere" gegriffen wird. Mir fällt einfach nichts mehr ein. Habt ihr eine pfiffige Idee? Oder geht es einfach nicht schneller???

Viele Grüße, Tom
 
G

Gast

Gast
Wenn das "ins Leere greifen" das Problem ist dann würde ich an deiner Stelle keine Arrays mehr verwenden sondern auf ArrayLists. Wird zwar kompliziert da du schon eine hast aber ist meiner Meinung nach doch die einfachste Lösung.
Obwohl ArrayList<ArrayList<ArrayList>>> schon sehr übel aussieht. Da muss man dann echt aufpassen ;)
 
G

Guest

Gast
Hi,

hier eine etwas optimierte Beispielimplementierung mit ArrayLists. Die Haupteigenschaften sind:

- Nutzt einen effizienteren Zufallszahlengenerator (https://uncommons-maths.dev.java.net/)
- Die prozentuale Verteilung auf die beiden Arrays ist nur statistisch korrekt und nicht exakt, wie in der ursprünglichen Implementierung
- Reduziert den Algorithmus auf einen Schleifendurchlauf und benutzt durchgängig ArrayLists um unperformantes Array kopieren zu vemeiden
- Es ist wirklich nur eine Beispielimplementierung!! Bitte nicht direkt so einsetzen, sondern nur als Vorlage für eine eigene Implementierung nehmen

Hoffe es hilft
-Tim

Code:
    public static List<ArrayList<double[]>> splitArrayRandomly2(ArrayList<double[]> data, double part1percentage)
    {
        List<ArrayList<double[]>> result = new ArrayList<ArrayList<double[]>>( 2 );

        // map percentage to 0.0 - 1.0 range
        if( part1percentage > 1 )
        {
            part1percentage = 1.0;
        }
        else if (part1percentage < 0)
        {
            part1percentage = 0.0;
        }

        // special case 1.0
        if( part1percentage == 1.0 )
        {
            result.add( data );
            result.add( new ArrayList<double[]>() );
            return result;
        }

        // special case 0.0
        if( part1percentage == 0.0 )
        {
            result.add( new ArrayList<double[]>() );
            result.add( data );
            return result;
        }

        // else, do the real work
        BinomialGenerator generator = null;

        try
        {
            // genarates random numbers between 0 and 1 with a statistical percentage of part1percentage 1'ns
            generator = new BinomialGenerator(1, part1percentage, new CellularAutomatonRNG( DefaultSeedGenerator.getInstance() ) );
        }
        catch ( SeedException e )
        {
            e.printStackTrace();  //To change body of catch statement use File | Settings | File Templates.
        }

        // create the two array we sort to, with a safety-buffer of one percent
        int tcount = (int)(data.size() * part1percentage) + (int)(data.size() * 0.01);
        int vcount = (int)(data.size() * (1.0 - part1percentage) ) + (int)(data.size() * 0.01);

        ArrayList<double[]> tpatterns = new ArrayList<double[]>(tcount);
        ArrayList<double[]> vpatterns = new ArrayList<double[]>(vcount);

        for ( double[] curElement : data )
        {
            if ( generator.nextValue() == 1 )
            {
                tpatterns.add( curElement );
            }
            else
            {
                vpatterns.add( curElement );
            }
        }

        result.add( tpatterns );
        result.add( vpatterns );
        return result;
    }
 
G

Guest

Gast
Hi,

hier eine etwas aufgeräumtere Version, die jetzt wirklich nur noch ArrayLists benutzt:

Code:
    public static List<ArrayList<ArrayList<Double>>> splitArrayRandomly2(ArrayList<ArrayList<Double>> data, double part1percentage)
    {
        List<ArrayList<ArrayList<Double>>> result = new ArrayList<ArrayList<ArrayList<Double>>>( 2 );

        // special case 1.0
        if( part1percentage >= 1.0 )
        {
            result.add( data ); result.add( new ArrayList<ArrayList<Double>>() );
        }
        // special case 0.0
        else if (part1percentage <= 0.0 )
        {
            result.add( new ArrayList<ArrayList<Double>>() ); result.add( data );
        }
        // else, do the real work
        else
        {
            BinomialGenerator generator = null;

            try
            {
                // genarates random numbers between 0 and 1 with a statistical percentage of part1percentage 1'ns
                generator = new BinomialGenerator(1, part1percentage, new CellularAutomatonRNG( DefaultSeedGenerator.getInstance() ) );
            }
            catch ( SeedException e )
            {
                e.printStackTrace();  //Todo: Do something usefull here
            }

            // create the two arrays we sort to, with a safety-buffer of one percent
            int tcount = (int)(data.size() * part1percentage) + (int)(data.size() * 0.01);
            int vcount = (int)(data.size() * (1.0 - part1percentage) ) + (int)(data.size() * 0.01);

            ArrayList<ArrayList<Double>> tpatterns = new ArrayList<ArrayList<Double>>(tcount);
            ArrayList<ArrayList<Double>> vpatterns = new ArrayList<ArrayList<Double>>(vcount);

            for ( ArrayList<Double> curElement : data )
            {
                if ( generator.nextValue() == 1 )
                    tpatterns.add( curElement );
                else
                    vpatterns.add( curElement );
            }

            result.add( tpatterns ); result.add( vpatterns );
        }

        return result;
    }

Bei einem einfachen Test mit einem Array von [500000][8] komme ich auf eine ungefähre Laufzeit von 400 bis 500 Millisekunden; sollte also deutlich schneller laufen als die ursprüngliche Implementierung.

-Tim
 

pocketom

Bekanntes Mitglied
Hi!

Erstmal danke für deine Antwort. Sieht auf den ersten Blick kompliziert aus, hab aber verstanden wie es funzt. Liest sich nur etwas ungewohnt. Ich werde es mal probieren und die Performance mit meiner aktuellen Lösung vergleichen. Jetzt wo dus sagst, eine exakte Lösung brauche ich eigentlich eh nicht, das Teil splittet die Daten für ein neuronales Netz, dem dürfte das wurst sein. Was es allerdings tun muss, es muss immer mischen. Auch wenn man 0% oder 100% als Anteil1 verwendet.


Habe natürlich nicht locker lassen können und mir die ganze Nacht um die Ohren geschlagen *räusper* :cool:

*gähn*


Habe das jetzt mal so implementiert:

Code:
/**
	 * splits an array into two parts by drawing random values
	 * 
	 * @param data the input 2D array of doubles
	 * @param part1percentage the percentage to put into the first 2D array,
	 * the rest is put into the second array
	 * 
	 * @return a list containing the two splitted parts (List(0) = training, List(1) = validation)
	 */
	public static List<double[][]> splitArrayRandomly(double[][] data, double part1percentage)
	{		
		if(part1percentage > 1)
			part1percentage = 1.0;
		else if(part1percentage < 0)
			part1percentage = 0.0;
				
		int tcount = (int)(data.length * part1percentage);
		int vcount = data.length -tcount;
		int total = tcount + vcount;
				    	
    	// fetch the training patterns
		System.out.println("Drawing training pattern pool("+tcount+" total).");    	
    	double[][] tpatterns = new double[tcount][data[0].length];
    	int[] t_positions = getUniqueRandomInts(tcount, total);    	
    	for (int i = 0; i < t_positions.length; i++)
			tpatterns[i] = data[t_positions[i]];

    	System.out.println();
    	// fetch the validation patterns
    	System.out.println();
    	System.out.println("Drawing validation pattern pool("+vcount+" total).");    	
    	double[][] vpatterns = new double[vcount][data[0].length];
    	int[] v_positions = getUniqueRandomInts(vcount, total, t_positions);
    	for (int i = 0; i < v_positions.length; i++)
			vpatterns[i] = data[v_positions[i]];    	
    	
    	ArrayList<double[][]> result = new ArrayList<double[][]>();
    	
    	result.add(tpatterns);
    	result.add(vpatterns);   	
    	
    	return result;
	}


/**
     * create an array with unique, random drawn integers
     * from 0 - max.
     * 
     * @param size the number of integers to draw
     * @param max the highest integer that should be drawn
     * 
     * @return array with the random integers
     */
    private static int[] getUniqueRandomInts(int size, int max)
    {			
    	return getUniqueRandomInts(size, max, new int[0]);
    }    
    
    /**
     * create an array with unique, random drawn integers
     * from 0 - max.
     * 
     * @param size the number of integers to draw
     * @param max the highest integer that should be drawn
     * @param exclude an array of integers that should not be contained in the
     * result, for example because they have been already drawn.
     * 
     * @return array with the random integers
     */
    private static int[] getUniqueRandomInts(int size, int max, int[] exclude)
    {	
		Stack<Integer> st 	= new Stack<Integer>();
		HashSet<Integer> hs = new HashSet<Integer>();
		
		for (int i = 0; i < exclude.length; i++) 
			hs.add(exclude[i]);
		
    	Random randomizer = new Random(System.nanoTime());
    	int r;
    	
    	
    	int count = 1; 
    	String len = String.valueOf(size);
    	String zeros = "";
    	for(int i=0;i<len.length();i++)
    		zeros+="0";
    	DecimalFormat formater = new DecimalFormat(zeros);
    	while(st.size() < size)
    	{
    		r = randomizer.nextInt(max);  
    		
    		if(!hs.contains(r))
    		{
    			hs.add(r);
    			st.push(r);
    			
    			if(count%100000 == 0)
    				System.out.print( formater.format((((int)(hs.size()/100000))*100000))+"  ");
    			if(count%1000000 == 0)
    				System.out.println();
    			
    			count++;
    		}   		
    	}
    	
    	int[] result = new int[st.size()];
    	
    	for(int i=0; i<result.length; i++)
    		result[i] = st.pop();    		
    	
    	return result;
    }


Ist wirklich sehr sehr schnell (zumindest im Vergleich zu vorher). Für 11 Millionen Arraypositionen braucht er bei mir so ca. 3-4 Minuten. Vorher hab ichs nicht mehr ausgehalten bei 5 Mio. und nach ner Stunde abgebrochen... Braucht nur RAM ohne Ende, 10-12 GB futtert es bei 11 Mio. auf. Überlege grad wie ich es jetzt noch parallelisieren kann, habe noch etliche Kerne die kalt sind. Denke um den Faktor 4-8 kann man noch was rausholen (ist zwar nicht zwingend nötig aber macht irgendwie Fun).

So funkt das jetzt: Zum checken das Hashset nutzen, contains() hat O(1), und zum aufnehmen den Stack mit ebenfalls O(1) dank push(). Generieren des Ergebnisses auch O(1) dank pop(). Und einfach und intuitiv bedienbar dank des 2-Phasen Konzepts.

Den von dir vorgeschlagenen BinomialGenerator werd ich gleich mal ausprobieren, ist der irgendwie schneller als der original Randomizer (bzw. gibts da generell nen großen Unterschied bei Drittanbieter-Randomizern)?

Ach ja, und es ist natürlich die exakte Lösung.
 
G

Guest

Gast
Hi!

...
Was es allerdings tun muss, es muss immer mischen. Auch wenn man 0% oder 100% als Anteil1 verwendet.

Ok, das hatte ich übersehen.

...
Den von dir vorgeschlagenen BinomialGenerator werd ich gleich mal ausprobieren, ist der irgendwie schneller als der original Randomizer (bzw. gibts da generell nen großen Unterschied bei Drittanbieter-Randomizern)?
...

Der eigentliche Zufallszahlengenerator ist der CellularAutomatonRNG (erweitert Randomizer, ist also ein DropIn Ersatz); und der ist sehr schnell. Der BinomialGenerator sorgt nur dafür, dass die Gewichtung der erzeugten 1sen und 0en stimmt. Einen guten Blog Beitrag zu Java und Zufallszahlen gibt es hier [1], mehr zur Binomialverteilung gibts in der Wikipedia [2] und hier [3] gibt es eine sehr gute Java Bibliothek für wissenschaftliche Anwendungen, unter anderem auch mit einem Zufallszahlengenerator.

-Tim

[1] http://blog.uncommons.org/2008/04/0...-random-numbers-part-1-beyond-javautilrandom/
[2] http://de.wikipedia.org/wiki/Binomialverteilung
[3] http://www.ee.ucl.ac.uk/~mflanaga/java/
 
G

Guest

Gast
Hi,

nochmal etwas überarbeitet:

- jetzt mit Shuffle
- Benutzt zusätzlich commons-math (http://commons.apache.org/math/)

Braucht nach Warmup ca. 3 Sekunden für 6 Millionen Einträge; allerdings wieder kein exakter Split.

-Tim

Code:
    public static List<ArrayList<ArrayList<Double>>> splitArrayRandomly2(ArrayList<ArrayList<Double>> data, double part1percentage)
    {
        List<ArrayList<ArrayList<Double>>> result = new ArrayList<ArrayList<ArrayList<Double>>>( 2 );

        BinomialGenerator generator = null;
        int[] indexPermutation;

        if( part1percentage > 1.0 )
        {
            part1percentage = 1.0;
        }
        else if (part1percentage < 0.0 )
        {
            part1percentage = 0.0;
        }

        indexPermutation = new RandomDataImpl().nextPermutation( data.size(), data.size() );

        try
        {
            // genarates random numbers between 0 and 1 with a statistical percentage of part1percentage 1'ns
            generator = new BinomialGenerator(1, part1percentage, new CellularAutomatonRNG( DefaultSeedGenerator.getInstance() ) );
        }
        catch ( SeedException e )
        {
            e.printStackTrace();  //Todo: Do something usefull here
        }

        // create the two arrays we sort to, with a safety-buffer of one percent
        int tcount = (int)(data.size() * part1percentage) + (int)(data.size() * 0.01);
        int vcount = (int)(data.size() * (1.0 - part1percentage) ) + (int)(data.size() * 0.01);

        ArrayList<ArrayList<Double>> tpatterns = new ArrayList<ArrayList<Double>>(tcount);
        ArrayList<ArrayList<Double>> vpatterns = new ArrayList<ArrayList<Double>>(vcount);

        for ( int i : indexPermutation )
        {
            if ( getNextRandomNumber(generator, part1percentage) == 1 )
                tpatterns.add( data.get( i ) );
            else
                vpatterns.add( data.get( i ) );
        }

        result.add( tpatterns ); result.add( vpatterns );

        return result;
    }

    /**
     * Returns a random sequence on ones and zeros with the given stochastic propability of ones.
     *
     */
    private static int getNextRandomNumber( BinomialGenerator generator, double propbability )
    {
        if ( propbability == 1.0 )
        {
            return 1;
        }
        else if ( propbability == 0.0 )
        {
            return 0;
        }
        else
        {
            return generator.nextValue();
        }
    }
 

Marco13

Top Contributor
Hm :? was spricht jetzt gegen sowas? (3.9 Sekunden für 10 Millionen Einträge bei exaktem split - und 7 Zeilen code...)

Code:
import java.util.*;

class RandomSplitTest
{
    public static void main(String args[])
    {
        int size = 10000000;
        List<double[]> data = new ArrayList<double[]>(size);
        for (int i=0; i<size; i++)
        {
            double d[] = new double[2];
            for (int j=0; j<d.length; j++)
            {
                d[j] = Math.random();
            }
            data.add(d);
        }

        System.out.println("Splitting...");
        long before = System.nanoTime();
        List<List<double[]>> result = splitArrayRandomly(data, 0.2);
        long after = System.nanoTime();
        long requiredMs = (after-before) / 1000000;
        System.out.println("Required "+requiredMs+" ms");


        //print(result.get(0));
        //print(result.get(1));
    }


    private static void print(List<double[]> list)
    {
        System.out.println("Number of elements: "+list.size());
        for (int i=0; i<list.size(); i++)
        {
            System.out.println(Arrays.toString(list.get(i)));
        }
    }



    public static List<List<double[]>> splitArrayRandomly(List<double[]> data, double part1percentage)
    {
        List<double[]> input = new ArrayList<double[]>(data);
        Collections.shuffle(input);
        int split = (int)(input.size() * part1percentage);
        List<List<double[]>> result = new ArrayList<List<double[]>>();
        result.add(input.subList(0, split));
        result.add(input.subList(split, input.size()));
        return result;
    }


}
 

Marco13

Top Contributor
Korrigiere: 3 Zeilen
Code:
    public static List<List<double[]>> splitArrayRandomly2(List<double[]> data, double p)
    {
        List<double[]> i = new ArrayList<double[]>(data);
        Collections.shuffle(i);
        return new ArrayList<List<double[]>>(Arrays.asList(i.subList(0, (int)(i.size() * p)), i.subList((int)(i.size() * p), i.size())));
    }
( :cool: )

(Jaja.... :roll: )
 

pocketom

Bekanntes Mitglied
Hey, danke!

Das ist natürlich eine simple und sehr effective Methode. Ich habe wohl ein wenig zu komplizert gedacht. Wobei die 3 Zeilenvaraiante ich natürlich auf zwei verkürzen liesse wenn man data gleich direkt shufflen würde ;-)

Ich bevorzuge dann aber doch eher die 7 Zeilen, das ist übersichtlicher.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
8u3631984 Frage Performance bei Linked List und Array List Allgemeine Java-Themen 5
H Performance einer Monte-Carlo-Simulation verbessern Allgemeine Java-Themen 6
goldmensch Datentypen Welche Methode hat die bessere Performance? Allgemeine Java-Themen 12
H Watson-Crick-Complement Performance Allgemeine Java-Themen 18
L Best Practice Auslagerung von Code = Performance Optimierung? Allgemeine Java-Themen 4
B Performance Messungen Allgemeine Java-Themen 4
J Threads verbessern die Performance NICHT ? Allgemeine Java-Themen 8
X Performance für Tomcat / Apache optimieren Allgemeine Java-Themen 2
I Performance - JDBC UPC PoolDataSoure Allgemeine Java-Themen 0
E Lambda filter performance Allgemeine Java-Themen 2
D Performance-Probleme mit Joda-Time Allgemeine Java-Themen 3
A Jasper Report Performance bei PDF erzeugen Allgemeine Java-Themen 0
A Best Practice Variablen vertauschen - Performance Allgemeine Java-Themen 1
R DBUnit Performance Probleme Allgemeine Java-Themen 0
P Performance: super explizit erwähnen oder weglassen? Allgemeine Java-Themen 5
S starke performance probleme des forums Allgemeine Java-Themen 10
C Performance Tips Allgemeine Java-Themen 13
A Performance/Speicherplatz-Nutzung bei Tests Allgemeine Java-Themen 6
R Java Performance testen Allgemeine Java-Themen 18
StrikeTom Java Performance Fragen Allgemeine Java-Themen 5
V Performance steigern Allgemeine Java-Themen 7
D Reflection-Performance Allgemeine Java-Themen 7
M Einfluss von Caching auf die Performance (große Arrays) Allgemeine Java-Themen 24
R Collections Performance einer HashMap Allgemeine Java-Themen 26
i<3java [Groovy/Grails](oder auch java) Mögliche Performance Probleme bei Mailversendung Allgemeine Java-Themen 2
D Performance Objektallokation Allgemeine Java-Themen 28
J Java Performance nicht nachvollziehbar Allgemeine Java-Themen 3
I Library für High Performance Mime Type Erkennung Allgemeine Java-Themen 8
S Performance Frage: Objekt oder static? Allgemeine Java-Themen 33
M Runtime.exec() - Performance / Frage zu Threads Allgemeine Java-Themen 5
M Performance Allgemeine Java-Themen 6
M Performance Allgemeine Java-Themen 5
E Performance website download Allgemeine Java-Themen 13
MQue Performance Methodenaufruf - if Abfrage Allgemeine Java-Themen 19
hdi Was frisst in meinem Programm den Speicher / verschlechtert die Performance Allgemeine Java-Themen 11
J Performance von Java GUI-Anwendungen Allgemeine Java-Themen 2
U Java Performance im Vergleich zu C++ in speziellem Anwendungsfall Allgemeine Java-Themen 6
S Performance und Function Call Depth Allgemeine Java-Themen 6
H Performance Vorteil durch Wechsel der JVM? Allgemeine Java-Themen 6
A Performance: byte[] in byte[][][] konvertieren Allgemeine Java-Themen 2
T Performance ArrayList#remove Allgemeine Java-Themen 8
ARadauer Performance Pptimierung -Lesen/Schreiben Allgemeine Java-Themen 10
Chris81T Performance Problem durch mehrfaches Starten eines JAVA Prog Allgemeine Java-Themen 8
G Hibernate, JTable und Performance Allgemeine Java-Themen 17
M Listener und Performance Allgemeine Java-Themen 9
D Performance: ArrayList vs. Array vs. "Eigene Liste&quot Allgemeine Java-Themen 8
M nichtreferenzierte Objekte auf NULL setzen -> Performance Allgemeine Java-Themen 4
S Ursache für schlechte Performance Allgemeine Java-Themen 2
L Java Performance Check Tool Allgemeine Java-Themen 3
S Performance von Comparator Allgemeine Java-Themen 3
egrath Performance Problem mit File-I/O Allgemeine Java-Themen 6
S Performance Problem Allgemeine Java-Themen 11
X Java Performance auf Sun Systemen bzw. generell Allgemeine Java-Themen 4
T Performance String-Operationen und StringBuffer (1.4und 1.5) Allgemeine Java-Themen 18
P miese performance bei nem BufferedImage + repaint :( Allgemeine Java-Themen 6
T Performance-Grundlagen Allgemeine Java-Themen 4
G Performance Problem bei der Übertragung Server zum Client Allgemeine Java-Themen 3
V Performance Leck finden Allgemeine Java-Themen 3
T Tile Game Performance Allgemeine Java-Themen 32
M Performance enorm langsam Allgemeine Java-Themen 26
F Performance von Reflection vs Statisches Coden Allgemeine Java-Themen 4
M Performance: Java zu C/C++ bei Datenbankanwendung Allgemeine Java-Themen 3
Y unnecessary cast & Performance Allgemeine Java-Themen 29
conan2 Performance von paint() Allgemeine Java-Themen 2
G Performance JDOM - DOM - eigene HashMap (SAX) Allgemeine Java-Themen 2
F Bilder als "Thumbnails" laden - Performance Allgemeine Java-Themen 6
S Java3D Performance optimieren Allgemeine Java-Themen 5
F Wenn ihr Performance wollt nehmt C++ Allgemeine Java-Themen 39
N Performance-Test (Geschwindigkeit von Methoden vergleichen)? Allgemeine Java-Themen 4
S Performance Test mit JMeter Allgemeine Java-Themen 2
T Performance Allgemeine Java-Themen 8
J Anfängerliste für gute Performance? Allgemeine Java-Themen 3
Luma Performance-Problem mit RandomAcces File Allgemeine Java-Themen 4
I Performance bei "String <-> Byte"-Umwandlung Allgemeine Java-Themen 4
I Performance-Probleme bei Schleife Allgemeine Java-Themen 3
C Performance von FOR Schleifen Allgemeine Java-Themen 25
C Performance Vergleich, Java vs. Tcl/Tk Allgemeine Java-Themen 3
L Echtzeitdaten aus einer Webseite ziehen mit Java Allgemeine Java-Themen 19
S JFreechart: ValueMarker mit der Maus ziehen? Allgemeine Java-Themen 12
J berechnung von potenzen und wurzel-ziehen ohne klasse " Allgemeine Java-Themen 14
M Datei auf Anwendung ziehen und starten Allgemeine Java-Themen 11
P Wurzel ziehen, aber wie? Allgemeine Java-Themen 10
C aus einem Thread eine HashMap ziehen Allgemeine Java-Themen 3
R 11 GB File lesen ohne zu extrahieren Filedaten Bereich für Bereich adressieren dann mit Multi-Thread id die DB importieren Allgemeine Java-Themen 3
O Maven ein externes jar laden ohne die Applikation neu zu kompilieren Allgemeine Java-Themen 4
Mike80 Processing Programm fiert ohne Arduino ein Allgemeine Java-Themen 2
T Datum OHNE Uhrzeit Zeitzonen-übergreifend Allgemeine Java-Themen 4
N mit sysout, ohne sysout Allgemeine Java-Themen 17
O Programmierprüfung auf moodle ohne Hilfsmittel... Allgemeine Java-Themen 23
Mozart53 JLabel nur meinen Text verschieben ohne Image Allgemeine Java-Themen 3
M Switches ohne String Allgemeine Java-Themen 18
A Java JDK ohne Oracle Konto Allgemeine Java-Themen 5
H Matrix ohne Array erstellen Allgemeine Java-Themen 9
N E-Mail Validator (ohne Regex!) Allgemeine Java-Themen 7
A Java ListNode Element einfügen ohne Bibliothek Allgemeine Java-Themen 6
G Datei aus Ordner wählen, ohne den Dateinamen im Pfad angeben zu müssen Allgemeine Java-Themen 4
Thallius Zeitzone zu einem LocalDate hinzufügen aber ohne es zu ändern... Allgemeine Java-Themen 2
O Produziert das Tool "jpackage" (ab JDK 14) .exe Dateien, die auf einer Zielumgebung ohne JRE lauffähig sind ?` Allgemeine Java-Themen 7
Drachenbauer wie kann ich alle instanzen einer Klasse durchsehen, ohne, dass diese in einer Liste erzeugt wurden? Allgemeine Java-Themen 11
X Adjazenzliste ohne ArrayList Allgemeine Java-Themen 6

Ähnliche Java Themen

Neue Themen


Oben