2009-06-15 7 views
1

나는 꽤 많은 클라이언트 측 스크립트를 기반으로하는 응용 프로그램을 개발하려고합니다. 이 페이지에는 서로 다른 입력을 기반으로 상호 작용하는 섹션이 있습니다. 문제는 페이지에서 콘텐츠를 많이 얻을 때 IE7에서이 브라우저와 통합 된 가난한 자바 스크립트 엔진으로 인해 속도가 느려지고 부분적으로 페이지에 꽤 많은 데이터가 있기 때문입니다.IE7 Javascript 성능

나는 가능한 모든 작업을 위해 이미 웹 서비스를 사용하고 있으며, ID 기반 선택기가있는 JQuery와 가능한 한 작은 효과와 애니메이션으로 사용하고 있습니다.

여러분이이 최적화를 위해 사용할 수있는 팁이 있습니까?

+0

코드를 보거나 적어도 무엇을하고 있는지 * 알 수 있습니다. –

+0

그래, 전에 IE7을 싸웠다. 코드를 보지 않고 도저히 돕기가 어렵습니다. – Nosredna

+0

몇 가지 코드가 필요합니다. –

답변

3

프로파일 러에서 코드를 실행하고 실제로 수행중인 작업을 확인하십시오. 시간을 어디에서 보는지 알아보십시오. IE8은 개발자 도구에 포함 된 알맞은 프로파일 러와 IE7 호환성을 제공합니다.

IE7에서 프로파일 링을 직접 수행하려면 Visual Web Developer 또는 MS Office와 함께 번들로 제공되는 디버거를 사용해야합니다. 주변을 더 속일 필요가 있지만 작동하도록 할 수 있습니다. 새 컴퓨터에 이것을 설치할 필요가있을 때마다 매 시간마다 마법을 발동시켜야 효과를 볼 수있게되었지만 가능합니다.

+0

IE7에는 문제가 있지만 IE8에는 문제가 없다면별로 도움이되지 않습니다. –

+0

IE7 호환 모드는 기본 IE7과 속도 프로필이 같습니까? 그렇다면 프로파일 링은 훌륭한 출발점이 될 것입니다. – Nosredna

+0

아니요, IE7이 일을 수행하는 방식을 따르기 만 합니다만, 확실히 똑같은 속도는 아닙니다. –

3

몇 오프 - 더 - 벽 제안 ... 코 프로세서로

  1. 플래시. 계산하기에 비용이 많이 드는 일이 있다면 플래시로 넘길 수 있습니다. ActionScript는 IE의 비참한 JS보다 빠르다. 그러나 JS와 Flash간에 많은 양의 데이터를주고 받으면 속도가 매우 느립니다.
  2. Google Gears. 웹 작업자와 함께 작업 속도를 높일 수 있습니다. IE7을 발견하면 IE8로 업그레이드하거나 Google Gears를 설치하면 경험이 향상됩니다.
  3. 아마도 Silverlight를 보조 프로세서로 사용할 수 있습니다. 그러나 나는 그것에 대한 경험이 없다.

천천히 말할 수 있습니까? DOM을 만질 때입니까?

+1

+1 두 제안 모두, 나는 플래시에 대해 생각조차하지 않았다. –

+0

Silverlight에 대한 언급이 추가되었지만 작동 여부는 추측에 불과합니다. – Nosredna

+0

은 위와 같은 이유로 실버 라이트를 사용할 수 없습니다. 내가 할 수 있으면 좋겠다! –

0

이 자바 스크립트 전문가 니콜라스 C. Zakas 그는, 범위 조회를 제한하는 지역 변수를 사용하여 최소로 자바 스크립트 CSS 스타일 변경 사항을 유지하도록 조언 http://www.youtube.com/watch?v=mHtdZgou0qU

(변경하여 자바 스크립트 최적화에 훌륭한 구글 기술 이야기 비디오입니다 클래스 대신) 및 배치에서 그들을 할 경우 브라우저 재 렌더링, 그리고 많은 다른 위대한 팁 많은 줄이기 위해 할 :

+0

그것은 큰 이야기 다. 나는 소더의 첫 번째 책을 가지고있다. 나는 새로운 것을 얻어야 할 것이다. – Nosredna

+0

또한 YUI Teather를 확인하십시오. http://developer.yahoo.com/yui/theater/ 더글러스 크로 포드, 존 레지그 (jQuery), 니콜라스 자카 (Nakolas Zakas) 등 JS의 JS, AJAX, 성능, 스타일 및 철학에 대한 이야기가 있습니다. – Javier

2

어쩌면 이러한 답변 중 일부는 분명히 누락되었을 수 있습니다.

사용중인 알고리즘의 효율성은 무엇입니까? 선의? 로그? 기하 급수적입니까? 문서가 커질수록 JAVASCRIPT의 속도가 느려지면 문제는 MS의 코드가 아니라 사용자 코드의 효율성입니다. IE는 자바 스크립트가 느리지 만 무엇이 당신이 그 브라우저에 특별히 문제가 있다는 것을 확신하게합니까? 다른 자바 스크립트 엔진도 괜찮습니까?

현재 수행중인 작업이나 수행중인 작업에 대해 한 가지 알지 못하는 한 가지 방법은 속도를 위해 메모리 사용량을 상쇄하는 것입니다. 이전 결과를 캐싱하고 주위에 거짓말을 찾을 수있는 다른 최적화 전략을 캐시하십시오. 이 책이나 웹 사이트에서 프로그래밍에 관한 내용을 읽으십시오.

두 번째로 기억해야 할 점은 DOM 상호 작용이 실제로 느립니다.동일한 작업을 수행하기 위해 코드를 재구성 할 수 있지만 dom에서 조작이 적 으면 성능이 향상됩니다.

+0

예, 코드없이 추측하고 있습니다. IE7의 가장 큰 문제점은 애니메이션 시각화 (다른 브라우저의 1/4로 목표 프레임 율을 가져와야하는 위치)와 Canvas를 사용하는 모든 것입니다. IE8조차 Canvas를 직접 지원하지 않습니다. – Nosredna

+0

나는 사용자의 상호 작용을 기반으로 꽤 많은 돔 조작을해야한다. 나는 Domer 조작을 많이하는 페이지 전체에 Telerik RadControls를 사용합니다. –

+0

그래서 내가 물어 보도록하겠습니다. iframe과 같은 무언가로 dom 조작의 강렬한 액션을 이동 시키면 dom 요소의 수가 현저히 줄어들어 iframe을 더 빠르고 더 느리게 처리 할 수 ​​있다고 생각합니까? > –

0

필요에 따라 이벤트를 첨부하고 분리하고 동작을 사용하지 마십시오. 또한 setTimeout 및 setInterval을 사용하여 UI 속도를 높이기 위해 스레드를 만듭니다. IU choppiness를 방지하기 위해 항상이 작업을 수행합니다.

2

일부 정규판은 거의 독점적으로 DOM에 속합니다. DOM은 느린 전체 브라우저입니다. 가능하면 innerHTML 사용자에게 문의하십시오. 표준을 준수하는 방식으로 작동하는 것은 아니지만, 까지는 가장 멀리 빠른입니다.

다음과 같이 사용하여 DOM 요소를 통해 반복하는 경우 : 당신이 NodeList의 길이를 요청할 때마다, 오히려 비싼 조회 작업이 수행되는 것을

for (var i = 0; i < domNodes.length; i++) { ... } 

참고. 여기

for (var i = 0, il = domNodes.length; i < il; i++) { ... } 

성능 향상은 믿을 수 있습니다 다음과 같이 당신은 NodeList의 길이를 캐싱하는 것이 더 낫다. Robert Nymanfor 루프의 흥미로운 비교를했습니다. 이 사실을 들어 본 적이 없다면 성능이 향상 될 수 있습니다.