Algorithm Engineering



Zugangsaufgabe 1
Stefan von der Krone
11M-IM

Max-Fill-Test

Random          _rand                = new Random();List<Long>      _list                = new ArrayList<Long>();
// = new LinkedList<Long>();int _numSuccessfullFills = 0;
int _numFills = Integer.MAX_VALUE;
...while (_numSuccessfullFills < _numFills) {   try {     _list.add(_rand.nextLong());     _numSuccessfullFills++;   } catch (OutOfMemoryError e) {     System.out.print("test ended with " +
Integer.toString(_numSuccessfullFills) +
" successfull fills!");     break;   } }

MAX-Fill-test

Test-Umgebung:
  • Java-Version: 1.7.0_15
  • Java-VM-Optionen:
    • -Xms2g (initial heap size: 2GB)
    • -Xmx4g (max heap size: 4GB)
  • OS: Mac OS X 10.9
  • Maschine: MacBook (Mid 2012)
    • 2,9 GHz Intel Core i7, DualCore, HT
    • 16 GB 1600MHz DDR3

Max-Fill-Test

  • ArrayList<Long>: 146.693.833 Elemente
  • LinkedList<Long>: 86.488.996 Elemente

Add-N-Test

int _numFills = #N#; 
N =
15.000.000
10.000.000
7.500.000
5.000.000
2.500.000
1.000.000

Add-N-Test

ArrayList<Long>
  N             Durchschnitt     Standardabweichung     Maximum     Minimum 15.000.000       1155,05 ms              121,79 ms     1474 ms     1061 ms 10.000.000        308,25 ms               38,63 ms      467 ms      283 ms  7.500.000        225,20 ms               28,97 ms      345 ms      209 ms  5.000.000        151,45 ms               26,61 ms      265 ms      141 ms  2.500.000         76,35 ms               13,50 ms      123 ms       69 ms  1.000.000         31,60 ms                8,15 ms       58 ms       27 ms


Add-N-Test

LinkedList<Long>
   N             Durchschnitt     Standardabweichung     Maximum     Minimum  15.000.000       1740,40 ms              136,31 ms     2241 ms     1593 ms  10.000.000        329,50 ms               75,10 ms      648 ms      293 ms   7.500.000        249,05 ms               34,37 ms      385 ms      222 ms   5.000.000        159,10 ms               26,01 ms      261 ms      145 ms   2.500.000         81,55 ms               18,90 ms      160 ms       72 ms   1.000.000         33,70 ms                8,68 ms       65 ms       29 ms


List-iterator-test

 int _numFills = #N#; 
N =
30.000.000
25.000.000
22.500.000
20.000.000
17.500.000
15.000.000

List-Iterator-Test

int _numFills;
int _middleIndex;
..._numFills = #N#; _middleIndex = _numFills >> 1;
...long i = 0; while (i < _numFills) { try { _list.add( i ); } catch (OutOfMemoryError e) { e.printStackTrace(); break; } i++; }

List-Iterator-Test

ArrayList<Long>
  N             Durchschnitt     Standardabweichung     Maximum     Minimum 30.000.000         26.03 ms                4,78 ms       42 ms       23 ms 25.000.000         21,30 ms                2,76 ms       32 ms       19 ms 22.500.000         19,65 ms                3,26 ms       31 ms       17 ms 20.000.000         17,05 ms                3,01 ms       29 ms       15 ms 17.500.000         16,80 ms                4,61 ms       31 ms       13 ms 15.000.000         12,90 ms                3,28 ms       27 ms       11 ms


List-Iterator-Test

LinkedList<Long>
  N             Durchschnitt     Standardabweichung     Maximum     Minimum 30.000.000        111,10 ms               19,82 ms      180 ms       95 ms 25.000.000         91,80 ms               12,40 ms      119 ms       79 ms 22.500.000         80,10 ms                7,93 ms      104 ms       71 ms 20.000.000         67,20 ms                6,19 ms       83 ms       63 ms 17.500.000         58,35 ms                5,68 ms       81 ms       55 ms 15.000.000         50,35 ms                3,71 ms       62 ms       47 ms


Test-Szenario #1

Remove-First
int i = 0;
int l = _list.size();
while ( i < l ) {
    _list.remove( 0 );
    i++;
}

Test-Szenario #1

Remove-First
  • ArrayList
    • n = 100.000
    • 756.6ms
  • LinkedList
    • n = 10.000.000
    • 54.95ms

TEST-Szenario #2

Remove-Last
int i = 0;
int l = _list.size();
while ( i < l ) {
    _list.remove( _list.size() - 1 );
    i++;
}

Test-Szenario #2

Remove-Last
  • ArrayList
    • n = 10.000.000
    • 14.05ms
  • LinkedList
    • n = 10.000.000
    • 56.35ms

Zugangsaufgabe 1

By Stefan Von Der Krone

Zugangsaufgabe 1

  • 410