Jestem nieco zdezorientowany z Javascript Typed Arrays.Wpisane tablice w Gecko 2: Float32Array konkatenacja i rozszerzenie
Co mam kilka Float32Array s, które nie mają concat metody. Nie wiem, ilu ich jest z góry, btw. chciałbym złączyć je wszystkie wewnątrz innego Float32Array, ale:
- jak powiedziałem wcześniej, nie ma metody konkatenacji
- jeśli staram się pisać przeszłość długości tablicy, tablica nie jest rozszerzona (aka to nie będzie działać - proszę pamiętać, że event.frameBuffer i bufor są zarówno Float32Array i że nie wiem, co ostateczna długość mojego bufora będzie):
var length_now = buffer.length;
for (var i = 0; i < event.frameBuffer.length; i += 1) {
buffer [length_now + i] = event.frameBuffer[i];
}
T Jedyne rozwiązanie, jakie znalazłem, to skopiowanie Float32Array w regularnej tablicy, to zdecydowanie nie jest to, czego chcę. Jak byś zrobił, stackoverflowers?
To jest naprawdę wielki. Dwa pytania: ciągłe ponowne tworzenie nowej tablicy maszynowej nie wpłynie na wydajność? i gdzie znalazłeś dokumentację dotyczącą członka funkcji .set? Nie ma go na połączonej stronie. – janesconference
@janesconference, cóż, niekoniecznie będzie to miało wpływ na wydajność, ponieważ 'set()' jest prawdopodobnie implementowane natywnie i, jako takie, jest oślepiająco szybkie w przypadku blits pamięci, ale będzie miało wpływ na pamięć, ponieważ nie można po prostu rozszerzyć istniejącej tablicy typów . W zależności od rozmiaru tablicy, jeśli pamięć przestaje być dostępna, może wystąpić dreszcz, a wydajność w rezultacie ogromnie się pogorszy. –
@ FrédéricHamidi: Jest inny problem niż "natywna" implementacja: Załóżmy, że masz n tablic z m elementami, które chcesz łączyć. Twoja złożoność to O (m^2), ponieważ będziesz kopiować coraz większe bloki danych. Optymalnym rozwiązaniem jest amortyzowany O (m). – user877329