Showing posts with label Optimize. Show all posts
Showing posts with label Optimize. Show all posts

Thursday, July 28, 2016

Fastest sorting algorithm for integers - radixsort


A programmer has often the problem of fast sorting. Which algorithm he/she should take for that type of data. I will show you simply the fastest algorithm but only for sorting integers. I'm talking about the radixsort. But sth like the fastest algorithm doesn't exist for sorting. Because it's always a question of the data type and pattern wich you wan't to sort. 

The code is written in python, because nearly every programmer understands it ^^ 

def radixsort( aList ):
  RADIX = 10
  maxLength = False
  tmp , placement = -1, 1
  while not maxLength:
    maxLength = True
    # declare and initialize buckets
    buckets = [list() for _ in range( RADIX )]
    # split aList between lists
    for  i in aList:
      tmp = i / placement
      buckets[tmp % RADIX].append( i )
      if maxLength and tmp > 0:
        maxLength = False
    # empty lists into aList array
    a = 0
    for b in range( RADIX ):
      buck = buckets[b]
      for i in buck:
        aList[a] = i
        a += 1
    # move to next digit
    placement *= RADIX

Tuesday, May 3, 2016

Programming Books


https://drive.google.com/open?id=0B18_gfM_Pmu-bEpyVU8wOTVPbjQ

  • Clean Code
  • code complete 2nd edition
  • Effective Java
  • HeadFirstDesignPatterns
  • Java Performance Tuning
  • Java Performance the definitive Guide
  • Python High Performance Programming
  • Software Architecture Design Pattern
  • Working Effectively with Legacy Code

Saturday, January 23, 2016

Java Optimierung


In diesem Post stelle ich euch die wichtigsten Techniken zur optimierung von Java Quellcode vor. Natürlich auch unterstzützt durch Beispiele.
Wie es zu diesem Post kam ist eigentlich leicht zu erklären. Niemand schaut mehr auf die Optimierung von Programmen, da wir doch solche Monstermaschienen produzieren können. In jedem alten Programmierbuch fand man zumindest am Schluss eine Rubrick für Optimierung. Heutzutage wird das gar nicht mehr praktieziert.
Es hat aber schon seine Vorteile. Zum einen ist es besser programmiert und zum anderen spart man dadurch viel Geld. Wenn wir uns mal eine Business Applikation vorstellen die viel Daten verarbeiten muss. Wenn Sie plötzlich in der gleichen Zeit doppelt so viel verarbeiten kann, rendiert sie viel mehr.
Jetzt aber zu den Top Ten Tipps:

  1. Arbeite immer nur mit den Daten welche du auch im Moment brauchts. Das heisst, dass zum Beispiel Referenz Objekte welche nur die benötigten Attribute haben oft einen klaren Performance Vorteil schaffen können, vor allem wen es um Grosse Datenmenge geht, wie das der Fall bei Datenbanken ist.
  2. Vermeide wenn möglich Methodenaufrufe in einer Schleife. Achte immer ob du nur die nötigsten Dinge in einer Schleife erledigs, dieser Programmcode wird X mal ausgeführt. Durch Veränderungen in dieser Materie kann man vieles bewirken.
  3. Achte bei Verzweigungen, dass du die wahrscheinlichsten Fälle zuerst behandelst.
  4. Eliminiere jegliche Redundanz in deinem Quellcode.
  5. Benutze Cache oder das Clonen von Objekten für bessere Performance.
  6. Achte immer auf die DatenTypen welche du brauchts. Erföllen Sie genau nur das, was gebaurcht wird. Oder noch vieles mehr. Und fall du mit Arrays arbeiten solltest, ist arraycopy viel schneller als eine selbstprogrammierte Schleife für diesen Zweck.
  7. Wenn dies möglich ist solltest du Konstanten verwenden. Dies gilt so auch für guten Code standart.
  8. Verwende wenn möglich lieber if -else statt switch -case. Das letztere ist unter Java langsammer.
  9. Verwende ArrayList statt Vektor und StringBuffer statt String.
  10. Vermeide wenn möglich Rekursionen

Gute Bücher zu diesem Thema:
  • Performant Java programmieren von Hendrik Schreiber

Sunday, January 25, 2015

Make Windows even faster

10 steps that makes your Windows Pc a lot faster


1.) Disable Icons
2.) Disable Visual Effects
3.) Clean your Pc with ccleaner
4.) Customize Autostart
5.) Defragment your hdd
6.) Customize Graphics
7.) Battery Settings on Laptop
8.) Update your drivers
9.)Set a low background
10.) Make a Partition for your Os with enaught memory and a data partition for Software ect.