taavi

Just another weblog

Väike võrdlus erlang vs. java

without comments

Nädalapäevad tagasi oli headel kolleegidel põnev programeerimisülesanne: ehitadada pisike programmike, mis näitaks google mapi peal miski teenuse leviala.

Ülesanne iseenesest lihtne – leviala on antud hunniku polügoonidena ning pead vaatama kas sind huvitav punkt jääb mõne polügooni sisse. Tõenäoliselt üks esimese kursuse programmeerimise ülesanne. Aga tundus piisavalt põnevana, et proovida ise ka järgi, kas saab hakkama.

Sai küll. Tulemused erlang vs. java

  • 396 rida erlangi koodi
  • ca. 4-6 tundi aega
  • 917 rida java koodi
  • ca. 2-3 päeva aega

Aeg on hinnanguline, kuna ei minul ega kolleegil polnud see põhitegevus. Päris nelja korda produktiivsem võrreldes imperatiivse programmeerimisega just polnud aga mingi täiesti arvestatava eduteguri sai küll.

Kasvõi esialgne lihtsustatud versioon ainult bounding boxi arvestamisega tuli äärmiselt lihtsalt:

find_bounded(Lat, Lon, AreaList) ->
    lists:filter( fun(#coverage_area{boundingbox=Box}) ->
                          {{MinLat,MinLon},{MaxLat,MaxLon}} = Box,
                          if
                              Lat >= MinLat andalso Lat =< MaxLat andalso
                              Lon >= MinLon andalso Lon =< MaxLon ->
                                  true;
                              true ->
                                  false
                          end
                  end, AreaList).

Sellega sai loogika tööle. Edasine oli ainult optimeerimine ja reaalne punkti polügoonis asumise algoritmi lisamine.

Written by taavi

February 24th, 2009 at 4:26 pm

Posted in IT, erlang, progemine