Fy søren for en TREIG Macbook Pro

Jeg har fått meg Mac.apple_macbook_pro_15_antiglare

Egentlig har jeg hatt Mac en stund, vi kjøpte en late-2012 iMac i late 2012 og bruker den som stue-maskin. Men dette er første gang siden 80-tallet at jeg har hatt Mac i jobbsammenheng og forsøkt å gjøre jobb-ting på den.

Det er en finfin maskin. En helt standard Macbook Pro 15.4 late-2013 med quad-core 2.0GHz i7, 8GB RAM og en 256GB SSD. Alt jeg har prøvd på den går unna så det griner. Stort sett like kjapt eller nesten like kjapt som på den to år gamle Linux-skrivebordboksen jeg fremdeles har.

Helt til jeg prøvde å bruke grep.

Grep er kommandolinje-versjonen av Spotlight, for de som ikke er helt med på Unix-saker. Den søker i en eller flere filer etter en tekst eller et regulært uttrykk.

Og den versjonen av grep som følger med OS X Mavericks er helt håpløst horribelt grusomt treig. Det vil si sånn i størrelseorden 10-20 ganger treigere enn grep på Linux-boksen min. Bare se:

jaime:~/tmp $ ls -lh large-file
-rw-r--r--@ 1 blarsen staff 864M Jun 3 09:04 large-file
jaime:~/tmp $ time grep thisstringnotthere large-file

real 0m15.192s
user 0m14.957s
sys 0m0.216s

Dette er den samme operasjonen på Linux-boksen med den samme filen:

tyrion:~/tmp $ ls -lh large-file
-rw-rw-r-- 1 blarsen blarsen 864M Jun 3 09:04 large-file
tyrion:~/tmp $ time grep thisstringnotthere large-file

real 0m0.418s
user 0m0.176s
sys 0m0.096s

15 sekunder på Mac. 0.4 sekunder på Linux-boks. Det gikk TRETTISEKS ganger raskere!

Jeg bruker grep mye. Både til å lete i skikkelig store filer (1-3GB databasedumper) og i kataloger med hauger av små filer (sånt som 500MB fordelt på 15.000 filer er ikke uvanlig). Og der hvor jeg på Linux-maskinen kunne gjøre et søk og få svar på ett sekund eller to må jeg altså på Macen vente i oppimot minuttet. Krise!

Det første jeg tenkte var at det var noe galt med disken på maskinen. Eller noe. Men det var ikke det, synderen er grep.

OS X er basert på FreeBSD, og den versjonen av grep som følger med OS X er altså FreeBSD-versjonen, ikke GNU-versjonen som pleier å følge med Linux-systemer. (Men det pleide ikke å være sånn – Apple leverte visstnok GNU grep før i tiden og byttet til FreeBSD grep når Mavericks kom.)

Løsningen er enkel:

  1. Installer MacPorts fra http://www.macports.org
  2. “sudo port install grep”
  3. Lykke:
jaime:~/tmp $ ls -lh large-file
-rw-r--r--@ 1 blarsen staff 864M Jun 3 09:04 large-file
jaime:~/tmp $ which grep
/opt/local/bin/grep
jaime:~/tmp $ time grep thisstringnotthere large-file

real 0m0.911s
user 0m0.242s
sys0m0.270s

Tada!

Fremdeles treigere enn Linux-boksen min, men så lite at jeg ikke gidder å lete etter årsaken.

2 thoughts on “Fy søren for en TREIG Macbook Pro

  1. Sjur Sørskår

    Bra artikkel her blarsen 🙂
    Noen tilbakemeldinger:
    Punkt 2 skulle kanskje vært “sudo port install grep” og ikke “ports”.
    Et annet poeng er at om en allerede har homebrew eller fink installert vil det være lurt å prøve dem først
    da flere installasjoner av slike package managere kan tråkke i hverandres bed.
    eks.
    brew tap homebrew/dupes; brew install grep

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *