Tôi hơi bối rối với Javascript Typed Arrays.Mảng đã nhập trong Gecko 2: Kết nối và mở rộng Float32Array
Tôi có một số Float32Array s, không có phương thức concat. Tôi không biết có bao nhiêu người ở trước, btw. Tôi muốn nối tất cả chúng bên trong một Float32Array, nhưng:
- như tôi đã nói trước đây, không có phương pháp nối
- nếu tôi cố gắng viết qua chiều dài mảng, mảng không được mở rộng (aka này sẽ không làm việc - xin lưu ý rằng event.frameBuffer và đệm đều Float32Array và rằng tôi không biết những gì chiều dài cuối cùng của bộ đệm của tôi sẽ được):
var length_now = buffer.length;
for (var i = 0; i < event.frameBuffer.length; i += 1) {
buffer [length_now + i] = event.frameBuffer[i];
}
T ông chỉ giải pháp tôi tìm thấy là để sao chép Float32Array trong một mảng thường xuyên, đó chắc chắn không phải là những gì tôi muốn. Làm thế nào bạn sẽ làm, stackoverflowers?
Đây là thực sự tuyệt vời. Hai câu hỏi: liên tục tái tạo một mảng được đánh máy mới sẽ không ảnh hưởng đến buổi biểu diễn? và bạn đã tìm tài liệu về thành viên hàm .set ở đâu? Nó không nằm trong trang bạn đã liên kết. – janesconference
@janesconference, tốt, nó sẽ không nhất thiết ảnh hưởng đến hiệu suất vì 'set()' có thể được thực thi một cách tự nhiên và nhanh như chớp, nhưng nó sẽ ảnh hưởng đến bộ nhớ vì bạn không thể mở rộng mảng kiểu hiện có . Tùy thuộc vào kích thước mảng, nếu bộ nhớ trở nên khan hiếm, sự va đập có thể xảy ra và hiệu suất sẽ giảm đi rất nhiều. –
@ FrédéricHamidi: Có một vấn đề khác so với việc triển khai "gốc": Giả sử rằng bạn có n mảng với các phần tử m mà bạn muốn ghép nối. Độ phức tạp của bạn sau đó là O (m^2), vì bạn sẽ sao chép các khối dữ liệu lớn hơn và lớn hơn. Giải pháp tối ưu được khấu hao O (m). – user877329