Arduino IDE: lassú fordítás

Processing/Wiring (illetve C) nyelvű programozási fogások, tippek. (AVR-Duino, Arduino, EthDuino, Diecimila, Severino, Nano, LilyPad)
Válasz küldése
spdrp
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2015. január 5. hétfő, 15:44

Arduino IDE: lassú fordítás

Hozzászólás Szerző: spdrp »

Sziasztok!

Ahogy elnézem a netet elég sokaknak problémája az, hogy vajon miért olyan lassú az arduino fordítója. Nálam is van egy 20-25 másodpercnyi idő, amíg látszólag nem csinál semmit a fordító, valójában egy temp mappába lefordít kerek húsz beépített libraryt, függetlenül attól, hogy használom-e őket a kódban vagy sem... nem lehetne erről valahogy lebeszélni a fordítót? Ha esetleg látná, hogy ezek már le vannak fordítva, akkor nem kellene neki újra, vagy valami...

Valaki azt javasolta, hogy nézzem meg a file dátumokat, mert valami hiba miatt lehet, hogy a forrás újabb dátumozású, mint az aktuális dátum, és ezért mindig frissebbnek gondolja a forrást és emiatt fordítja újra.
Más a boards.txt kiegészítését tanácsolta, de az se működött, sőt állítólag az 1.0-s IDE-től már figyelmen kívül hagyja a program...
Valami java buherálást leltem a neten, de ahhoz nem értek, úgyhogy ötletem se volt, hogy hogy kezdenék neki.

Valakinek sikerült már ezt a problémát áthidalni?

Előre is köszönök bármi nemű segítséget, további szép napot!
Avatar
Robert
Elektronbűvölő
Hozzászólások: 10213
Csatlakozott: 2005. december 9. péntek, 7:00

Re: Arduino IDE: lassú fordítás

Hozzászólás Szerző: Robert »

A hosszú fordítás az Arduino velejárója:(
A fordításkor nem abszolút memóriacímek vannak bennük (változók, programsorok, stb), így újra kell mindig fordítani - függően a teljes program memóriatérképétől.
Az Arduino alaprendszere sok függvényt használ, amit Te akár nem is látsz. Nézz bele a wiring.c állományba. Ez a rendszer "lelke".

A main.cpp meg a rendszermagot írja le.


Én nem piszkálnék rendszert, ha nem muszáj. Bár lehet, hogyha külön hívod meg a fordítót, akkor annak paraméterezésével megadható, hogy a meglevőt ne piszkálja...
spdrp
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2015. január 5. hétfő, 15:44

Re: Arduino IDE: lassú fordítás

Hozzászólás Szerző: spdrp »

Szinte kizárt, hogy ezek mind kellenének... ha mégis, akkor ez egy elég fura rendszer :P avr studiot és bascomot használtam eddig, azokban nincs efféle. Az óriási bonyolultságú alanti programhoz is ugyanúgy lefordul mind a 20 cucc:

Kód: Egész kijelölése

void setup() {
}

void loop() {
}
Ezek fordulnak le:

Kód: Egész kijelölése

CDC.cpp
HardwareSerial.cpp
HID.cpp
IPAddress.cpp
main.cpp
malloc.c
new.cpp
Print.cpp
realloc.c
Stream.cpp
Tone.cpp
USBCore.cpp
WInterrupts.c
wiring.c
wiring_analog.c
wiring_digital.c
wiring_pulse.c
wiring_shift.c
WMath.cpp
WString.cpp
...köszönöm az infót, akkor úgy fest várnom kell egy hivatalos "hegesztésre" etéren...
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Arduino IDE: lassú fordítás

Hozzászólás Szerző: csabeszq »

Az Arduino úgy működik, hogy mindent lefordít, de linkelésnél ami nem kell kihajítja.
Az 1.0.6-os meglehetősen kis kódméretet csinál.

Bár a probléma elég érdekes, mert nálam másodpercen belül lefordul minden 1.0.6-tal. Az általad említett 20 fájl lefordítása egy fordítónak a vicc kategóriába tartozik. A 2GHz-es dual core notebook-om is megfelelő sebességgel nyomja, nem szoktam várni a végeredményre.

Szóval nálad 2 dolog lehetséges:
- vagy a géped eszméletlen lassú
- vagy USB pen drive-on, esetleg CD-rom on tartod az Arduino fordításához szükséges fájlokat, aminek köszönhetően borzalmas lassú lesz minden
spdrp
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2015. január 5. hétfő, 15:44

Re: Arduino IDE: lassú fordítás

Hozzászólás Szerző: spdrp »

- vagy a géped eszméletlen lassú
Ilyen procim van.

- vagy USB pen drive-on, esetleg CD-rom on tartod az Arduino fordításához szükséges fájlokat, aminek köszönhetően borzalmas lassú lesz minden
Ilyen SSD-n van a rendszer is meg az Arduino is, meg a %temp% is, amibe fordít.

Minden más gyors, szerintem nem hardverprobléma van... UAC kikapcsolva, rendszergazda vagyok, hálózati problémákat nem tapasztaltam.

Ha neked olyan gyors (olyannak kéne lennie), akkor megtennéd nekem, hogy kérsz egy fordításkori log mutatását? File | beállítások helyen találod.

Nálam ilyen a log (látható benne a bonyolult program is. bocs az apró betűkért, de sok mindent kiír, nem akartam hatalmas képet róla... amennyire kell olvasható, nyilván nem így használom a szerkesztőt).

Meg ilyen a mappa, ami legenerálódik:

Kód: Egész kijelölése

 Volume in drive C has no label.
 Volume Serial Number is 5C20-8BAB

 Directory of C:\Users\spd\AppData\Local\Temp\build3342077782441658504.tmp

2015.01.06.  18:40    <DIR>          .
2015.01.06.  18:40    <DIR>          ..
2015.01.06.  18:40                 0 1.txt
2015.01.06.  18:31             1 239 CDC.cpp.d
2015.01.06.  18:31             2 224 CDC.cpp.o
2015.01.06.  18:31           329 390 core.a
2015.01.06.  18:31             1 360 HardwareSerial.cpp.d
2015.01.06.  18:31            34 320 HardwareSerial.cpp.o
2015.01.06.  18:31             1 319 HID.cpp.d
2015.01.06.  18:31             2 224 HID.cpp.o
2015.01.06.  18:31             1 250 IPAddress.cpp.d
2015.01.06.  18:31            15 936 IPAddress.cpp.o
2015.01.06.  18:31             1 073 main.cpp.d
2015.01.06.  18:31             4 516 main.cpp.o
2015.01.06.  18:31               350 malloc.c.d
2015.01.06.  18:31             9 628 malloc.c.o
2015.01.06.  18:31               225 new.cpp.d
2015.01.06.  18:31             6 640 new.cpp.o
2015.01.06.  18:31             1 161 Print.cpp.d
2015.01.06.  18:31            41 748 Print.cpp.o
2015.01.06.  18:31               352 realloc.c.d
2015.01.06.  18:31             7 312 realloc.c.o
2015.01.06.  18:31             1 093 sketch_jan06a.cpp.d
2015.01.06.  18:31                13 sketch_jan06a.cpp.eep
2015.01.06.  18:31             9 451 sketch_jan06a.cpp.elf
2015.01.06.  18:31             1 347 sketch_jan06a.cpp.hex
2015.01.06.  18:31             3 500 sketch_jan06a.cpp.o
2015.01.06.  18:31             1 169 Stream.cpp.d
2015.01.06.  18:31            31 176 Stream.cpp.o
2015.01.06.  18:31             1 081 Tone.cpp.d
2015.01.06.  18:31            16 560 Tone.cpp.o
2015.01.06.  18:31             1 332 USBCore.cpp.d
2015.01.06.  18:31             2 232 USBCore.cpp.o
2015.01.06.  18:31               619 WInterrupts.c.d
2015.01.06.  18:31             6 000 WInterrupts.c.o
2015.01.06.  18:31               604 wiring.c.d
2015.01.06.  18:31             9 668 wiring.c.o
2015.01.06.  18:31               623 wiring_analog.c.d
2015.01.06.  18:31             6 972 wiring_analog.c.o
2015.01.06.  18:31               625 wiring_digital.c.d
2015.01.06.  18:31            10 400 wiring_digital.c.o
2015.01.06.  18:31               621 wiring_pulse.c.d
2015.01.06.  18:31             7 032 wiring_pulse.c.o
2015.01.06.  18:31               621 wiring_shift.c.d
2015.01.06.  18:31             5 620 wiring_shift.c.o
2015.01.06.  18:31               154 WMath.cpp.d
2015.01.06.  18:31             7 028 WMath.cpp.o
2015.01.06.  18:31               243 WString.cpp.d
2015.01.06.  18:31            95 068 WString.cpp.o
              47 File(s)        683 119 bytes
               2 Dir(s)   5 431 046 144 bytes free
Ilyen mappából már van rengeteg, az *.o (ELF) fileok bitre megegyeznek mindegyikben (nyilván ahol használtam include-olt fájlt, ott az pluszban hozzájön, de az alap 20 megegyezik mindenütt), illetve a .d fileokban lévő egyedüli eltérés a %temp%\ almappájának a neve. Énszerintem ez még mindig valami hiba...
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Arduino IDE: lassú fordítás

Hozzászólás Szerző: csabeszq »

Végre sikerült elindítani a Windows-t otthon és kipróbálni, hogyan fordít az Arduino. Ha ez megnyugtat, nálam is hozta a 10-15 másodperces időket a 4 procis SSD-s gépen.

A probléma azért nem tűnt fel, mert Linuxot használok, ott
- első fordítás kb. fél másodpercig tartott
- a második tizedmásodperc alatt lement, mert az első fordítás után megmaradt .o fájlokat használta

Talán annak érdemes utánaolvasni, hogy miért van ez az őrületes különbség Windows alatt. Vírus írtó?
spdrp
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2015. január 5. hétfő, 15:44

Re: Arduino IDE: lassú fordítás

Hozzászólás Szerző: spdrp »

Végre sikerült elindítani a Windows-t otthon és kipróbálni, hogyan fordít az Arduino.
Nagyon szépen köszönöm, hogy foglalkoztál vele!

Ha ez megnyugtat, nálam is hozta a 10-15 másodperces időket a 4 procis SSD-s gépen.
Köszönöm, igen, megnyugtat: így már sokkal biztosabb, hogy nem egyedi a probléma :) (bár sokan panaszkodnak erre szerte a neten, de ugye az lehet bármi is...)

A probléma azért nem tűnt fel, mert Linuxot használok, ott
- első fordítás kb. fél másodpercig tartott
- a második tizedmásodperc alatt lement, mert az első fordítás után megmaradt .o fájlokat használta

Ennek így kéne működnie win alatt is... nem kellene újrafordítania mindent, legalábbis azokat a modulokat semmiképp, amiknek a forrása nem változott, ennek ellenére mindig újrafordít mindent, és (nálam) nem épp gyorsan. Összehasonlítottam random 6-8 fordítás eredményét (nem takarítottam a tempet mostanság, és összegyűlt eddig 26 mappányi): a benne található ELF fájlok binárisan megegyeznek, tehát tök felesleges újrafordítgatni őket (írtam fentebb pontosabban).

Talán annak érdemes utánaolvasni, hogy miért van ez az őrületes különbség Windows alatt. Vírus írtó?
Tegnap tettem egy kísérletet: letiltottam a hálózatot, uninstalláltam a vírusirtót meg a tűzfalat, kilőttem a defendert, a win tűzfalat (szolgáltatásostul persze): a helyzet változatlan. Most win8.1x64 van fent, de ugyanilyen volt win7x64 alatt is.

Tegnap ugrott be az is, hogy feltelepítsem a másik gépemre (tudom: rövid az eszem)... azon a gépindítástól számított legelső fordítással 9 másodperc alatt, a többivel kb. 5 másodperc alatt végez annak ellenére, hogy az is minden esetben újrafordít mindent. A proci benne pedig (elvileg) lassabb ettől, ugyanúgy 8GB RAM, bár ott nincs SSD, de van dedikált VGA (aminek nem kéne számtania). Tűzfal és vírusirtó ugyanaz fut rajta, azon win7x64 van, ugyanaz, mint ezen a gépen volt (azzal is ugyanúgy lassú volt). Amiben Arduino-szempontból különbözik, az a java verziója: amazon (amin gyorsabban fordul) kb. két éves van telepítve (nem kellett még semminek újabb), míg emezen naprakészen tartom... Ha már teszt, akkor felfrissítettem a javat a másik gépen is: ugyanúgy gyors maradt.

5s -- 35s. Szerintem ez elég jelentős...

Ettől függetlenül a cél az lenne, hogy ezen a gépen tudjam jól futtatni, mert a másik gép egyéb szempontokból körülményes. Lehet, hogy bizonyos procikat egyszerűen csak nem szeret a fordító?...
spdrp
Újonc
Újonc
Hozzászólások: 5
Csatlakozott: 2015. január 5. hétfő, 15:44

Re: Arduino IDE: lassú fordítás

Hozzászólás Szerző: spdrp »

update: a lassan fordítós gépen vmware és XP alatt gyors a fordítás (kb. 8/4s)... érdekes. Vagy a 64-bit vág oda a sebességnek, vagy valami szoftverrel ütközik...
Avatar
Siki
Újonc
Újonc
Hozzászólások: 4
Csatlakozott: 2009. szeptember 26. szombat, 6:00

Re: Arduino IDE: lassú fordítás

Hozzászólás Szerző: Siki »

Nekem is lassan fordított Windows 8.1 64x alatt. Azután lecseréltem a 32 java-t 64 bites-re és jelentősen felgyorsult a fordítás.

Üdv: Siki
Válasz küldése