2012-01-13 31 views
16

Tôi gặp sự cố khi sửa đổi băm vị trí trong IE8 cho XP. chỉ đơn giản gọi:phân bổ window.location.hash đau đớn chậm trong IE8

self.location.hash = "whatever" 

mất khoảng 800ms ~ 1800ms

Tôi không có ý tưởng những gì có thể làm chậm này xuống. Tôi đã kiểm tra cùng một hướng dẫn trên một số trang web khác và nó không phải là chậm.

Bất kỳ manh mối nào có thể làm chậm quá trình này? Tôi xin lỗi nhưng tôi không thể đưa ra một ví dụ trực tuyến.


EDIT: Dưới đây là Những gì tôi có được trong IE console, đầu vào:

console.log(new Date().getTime()); 
self.location.hash = "sfdsd"; 
console.log(new Date().getTime()); 

đầu ra:

JOURNAL : 1326468325447 
JOURNAL : 1326468327390 
undefined 

mà làm cho gần 2000 mili giây, nếu tôi đọc một cách chính xác, đối với một đơn chỉ định: /.


EDIT2: vì nó dường như không đủ rõ ràng, mã preofiled hơn:

var profileThat = function() {self.location.hash = "whatever"}; 
$('#keywatchHeader').click(profileThat); 

kết quả hồ sơ với hai lần nhấp chuột:

profileThat 2 3475,00 3475,00 
hidden 4 50,07 50,07 http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js 6 608 
eventHandle 8 3525,07 40,06 http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js 2 595 
get 4 20,03 20,03 http://192.168.0.30/kw5/js/jquery/jquery-1.6.2.js 6 419 
get 6 10,01 10,01 http://192.168.0.30/kw5/js/yui2/dom/dom.js 96 

EDIT3 :

Tôi chạy một số kiểm tra về số nút trên cây ra khỏi sự tò mò và kết quả là đáng ngạc nhiên. Sau một cuộc gọi như vậy:

document.getElementsByTagName('*').length; //3621 
$('#keywatchPanels').children().remove(); 
document.getElementsByTagName('*').length; //332 

sau đó các hồ sơ cung cấp cho 600ms thay vì 1700ms cho mỗi cuộc gọi! Nhưng tôi khó với số nút sẽ ảnh hưởng đến viết hashtag.


(edit4): Tôi đã tìm thấy câu hỏi có liên quan này: Why is this piece of Javascript code so slow? (nhưng câu trả lời ở đây là chỉ là "loại bỏ nó")

+0

Trang của bạn lớn bao nhiêu? Bất kỳ mã nào khác đang chạy kiểm tra băm? – epascarello

+0

bạn muốn nói chính xác là gì? pixel chiều rộng, trọng lượng, các yếu tố?Có trình quản lý lịch sử YUI2 đang kiểm tra hàm băm nhưng nó chỉ là hướng dẫn này, người hút nhiều thời gian đó, cho dù tôi có tồn tại nó trong mã hay bảng điều khiển. – BiAiB

+0

Tôi không thể tái tạo điều đó. Mất khoảng 100ms ở đây trên IE8.0.6001.18702. Bạn đo lường hiệu suất như thế nào? Bạn đã sử dụng [trình biên tập tập lệnh IE] (http://msdn.microsoft.com/en-us/library/dd565629%28v=vs.85%29.aspx#_start) chưa? – user123444555621

Trả lời

16

Cuối cùng, tôi đã tìm thấy câu trả lời của tôi trong một chú thích của một câu trả lời của một câu hỏi liên quan: Why is this piece of Javascript code so slow?

Ugh, vừa tìm thấy ai đó trên blog có cùng vấn đề. Rõ ràng là nó chỉ chạy chậm nếu bạn đang chạy Thanh công cụ dành cho nhà phát triển IE. Bây giờ tôi sẽ định cấu hình như thế nào? -_-'

- Aistina 07 tháng 5 '09 tại 09:22

Tại sao tôi không mặc dù về nó trước đó?

+0

Bạn vẫn có thể cấu hình bằng cách ghi lại thời gian trước khi thay đổi vị trí.hash và thời gian sau khi nó đã thay đổi và cảnh báo sự khác biệt (như trong câu hỏi của bạn ở trên). Sự khác biệt thời gian cho tôi là bất cứ nơi nào giữa 400ms đến 600ms mà tôi coi là khá cao. Bạn đã tìm thấy giải pháp nào cho sự chậm chạp chưa? –

+0

Không có câu trả lời nào khác ngoài việc đóng trình gỡ rối. Như tôi đã đề cập trong câu hỏi (xem EDIT 3), giảm phí trang của bạn (bằng cách xóa tất cả các phần tử) đã giảm thời gian phản hồi. Nhưng vào thời điểm này đây là tôn giáo nhiều hơn khoa học. – BiAiB

Các vấn đề liên quan