2010-03-13 3 views
3

우리는이 제품을 가지고 있으며 IE에서 실제로 느립니다. 우리는 이미 IE 사용자 (like thisthis)가 권고 한 많은 사례를 적용했으며 DOM 조작과 같이 중요한 부분의 성능을 위해 깨끗한 코드를 희생하려고합니다. 이 IE 프로파일 러의 스크린 샷에서 볼 수 있듯이 그러나Javascript, IE, Strings 및 성능 문제

.. alt text http://i43.tinypic.com/24g57c1.png

그냥 "문자열은"가장 큰 범죄자이다. 거의 750ms의 독점적 인 시간.

IE가 단지 문자열을 인스턴스화하는 데 750ms를 소비하고 있다는 것을 의미합니까? 나는 또한 Opera dev blog에이 물건을 읽어

빌드 스크립트, 의견을 공백을 제거하는 문자열의 모든 단일 인스턴스에 대한 문자열 객체를 생성 MSIE을 방지하기 위해 (배열 조회와 함께 문자열을 대체 할 수 -도 in 조건)

그러나 이것에 관한 더 자세한 정보는 없습니다. 누구든지 명확히 할 수 있습니까? IE에서 코드를 사용할 때마다 전체 String 인스턴스를 생성해야하지만, 배열 찾아보기 최적화가 어떤 모양인지는 알지 못합니다. BTW- 코드의 어디에서나 문자열 연결을 실제로 수행하지 않습니다.

는 우리가 사용하는 라이브러리는 Mootools의 1.2.4

을 이해할 수있을 것이다 어떤 제안입니다! Thx

UPDATE- 특히 "어레이 조회 최적화"에 대해 위에 언급 된 팁에 관심이 있습니다. 우리 도서관은 크고 (1MB) 다른 JS 코드처럼 많은 문자열을 포함하고 있습니다. 그러나 우리 도서관이 대부분의 도서관보다 크기 때문에이 문자열은 실제로 속도 문제를 일으키고 있습니다.

또한 String.prototype에 물건을 추가하면 모든 인스턴스가 느려지는 것을 아는 사람이 있습니까?

+0

콜 트리 프로파일 링보기도 사용할 수 있습니까? –

답변

5

더 자세히 볼 수있는 프로파일 러를 사용하면 String이 오래 걸리는 부분을 정확히 볼 수 있습니다. IE의 경우 특별히 dynaTrace AJAX Edition이 있습니다 (예, 무료입니다).

나는 그곳에있는 같은 페이지를 열어서, 무슨 일이 일어나고 있는지 볼 수있는 나무 쇠약을 줄 것입니다 ... 저수준 기능이 가장 오래 걸리는 것과 정확히 같은 핫 스포트보기 .

+0

Seconded - dynaTrace가 너무 이상하네요. 거의 이상합니다. – Pointy

+0

dynaTrace는 꽤 멋지게 보이지만 실행 중일 때는 제품이 작동하지 않습니다. 오류가 없거나 전혀 작동하지 않습니다. 젠장. 그러나 저수준 함수가 성능 문제의 대부분을 일으키는 지 이미 알고 있으며, 그것은'String'입니다. 그래서 내가 물어 보는 것은 문자열 사용을 최적화하는 방법을 아는 사람이 있다면 – adamJLev

+0

+1 dynaTrace입니다. 전에는 들어 보지 못했습니다. –

0

문자열은 자바 스크립트에서 변경할 수 없습니다. 당신이 뭔가를 할 때 의미 :

alert("hello" + " world"); 

세 개의 문자열이 생성되고있다 :

  1. 단어
  2. 안녕하세요 세계

안녕하세요 수 있습니다 이러한 경우를 찾기 및 그 고정 도움이 되길. Nick이 말했듯이, 프로파일 러를 사용하여 Strings의 특정 코드가 문제를 일으키는 지 정확히 파악하는 것이 가장 좋은 방법입니다.

+0

문자열에 미친 짓을하는 코드의 특정 부분은 없습니다. 대부분의 라이브러리에는 소스 코드에 수천 개의 문자열이 있지만 라이브러리가 1MB이면 문제가됩니다. 나는 Opera 개발자들이 블로그에서 언급 한 팁에 특히 관심이있었습니다. – adamJLev