Autor | Zpráva | ||
---|---|---|---|
návštěvník Profil * |
#1 · Zasláno: 1. 6. 2015, 23:06:40
Měřím vzdálenost ukazatele myši od ikony pomocí JS a
nerozumím tomu proč dostávám tento výsledek: waitCorrection = distance < minMouseDistance ? minMouseDistance : wait * (distance << 5); console.log("nearest: " + nearest.node.data.label); console.log("distance: " + distance + " distance div: " + ( distance << 5) ); Výstup: "nearest: Zábava" "distance: 191.96796591019026 distance div: 6112" 191 má být 10111111, posunem o 5 míst doleva bych měl dostat 101 čili 5. Místo toho je výsledek 6112. čili 1011111100000 u JS bitový posun funguje jinak než v C? |
||
Davex Profil |
#2 · Zasláno: 1. 6. 2015, 23:22:37
Při bitovém posunu vlevo se bity posouvají ve směru šipky
<< a zprava se doplňují nuly, takže to funguje stejně jako v jiných jazycích.
|
||
Chamurappi Profil |
#3 · Zasláno: 1. 6. 2015, 23:24:01
Reaguji na návštěvníka:
Tento dotaz je myšlený vážně? Doleva je na druhou stranu. Vzhled toho operátoru << napovídá, kam se bity posouvají…
|
||
návštěvník Profil * |
#4 · Zasláno: 1. 6. 2015, 23:50:28
Chamurappi:
Ne, to jen mám špatně nastavený kalendářní měsíc na svém počítači na duben. Davex Aha, tak já to už zapomněl. Takže jsem si spletl operátor. Hm https://jsperf.com/division-vs-bit-right-shift/3 |
||
juriad_ Profil * |
#5 · Zasláno: 2. 6. 2015, 01:23:15
návštěvník
Ver tomu, ze zrychleni aritmetiky o par procent ti vykon te zrudy nezlepsi. Pokud mas problemy s rychlosti kresleni a nikoli(!) vypoctu, muzes zkusit toto: http://html5.litten.com/using-multiple-html5-canvases-as-layers/. To ale vyzaduje, aby se strom sam od sebe nehybal, tedy v tvem pridade ze springy odstranit to springy (vypocet rozlozeni grafu pomoci simulace pruzin). |
||
návštěvník Profil * |
#6 · Zasláno: 2. 6. 2015, 13:19:22
juriad_:
Ale jo, pomohlo to co jsem dělal pomohlo hodně. Docela dost velkým problémem tam bylo že při každé události myši se volala funkce na zjišťování nejbližšího uzlu, což prochází pole s např. 150 uzly. Takže kdykoliv hneš myší tak se volalo několik funkcí, včetně třech funkcí na převod a další věci. Takže jsem tam dal prodlevu, která je mění v závislosti na vzdálenosti kurzoru myši od ikony. Tím pádem se to spouští jenom občas a zbytek je tam return false tak se událost přeskočí. Když jsem měl zapnutý panel firebugu vpravo a rozlišení obrazovky na 800x600 tak to jelo svižně na cca 93% výkonu vlákna. To už je včetně implementace aby se ikony co nejsou na obrazovce vidět nevykreslovaly. Později ještě přidám zabalení neaktivních ikon, takže těch ikon tam bude 4x-5x méně a tak by pomalý výkon neměl hrozit. Teď chci udělat ještě seřazení a vykreslování ikon podle úrovně fadingu, čili ty uzly co jsou slabě vidět budou vykresleny jako první, ty co maje fade 0 budou vykresleny jako poslední. |
||
Časová prodleva: 10 let
|
0