테스트 속도를 위해 컴퓨터 속도를 낮추는 방법은 무엇입니까? [닫은]


20

대부분의 사람들이 동의 하듯이 개발자에게 느린 컴퓨터를 제공하여 빠른 코드를 작성하도록 장려하는 것은 좋은 생각이 아닙니다 . 그러나 그 질문에는 요점이 있습니다. 내 dev 시스템은 빠르기 때문에 때로는 비효율적이지만 다른 사람들의 시스템에서 실행할 때만 명백한 코드를 작성합니다.

터보 차지 개발 기계를 일시적으로 느리게하는 좋은 방법은 무엇입니까? "속도"의 개념은 다음과 같은 몇 가지 요소를 포함합니다.

  • CPU 클럭 주파수.
  • CPU 코어의 양입니다.
  • 메모리 및 프로세서 캐시의 양입니다.
  • 다양한 버스의 속도.
  • 디스크 I / O.
  • GPU.
  • 기타

34
"터보 버튼"을 누르십시오 ... 아니오, 기다리십시오.
LennyProgrammers

6
문제의 근원은 다음과 같습니다. "방해 적으로 비효율적". 코딩 습관 변경
Darknight

16
@Darknight : 아니요, 그렇지 않습니다. 당신은에있는 그것, 바로 다음 빠르게 만드는 첫 번째 메이크업 필요한 경우 . 무엇을 최적화해야하는지 파악하려면 문제가되는 부분을 테스트하고 찾아야합니다. 처음에 가능한 한 빨리으로 물건을 만드는 것은 낭비입니다 당신 과의 가능성이 낭비 - 시간 바로 그 일을 .
Joonas Pulakka

1
글쎄, 나는 부분적으로 동의한다. 그러나 효율적인 코딩 습관이 있다면 그런 다음 "올바로 작동"하면 나중에 "더 빠르게"만드는 데 시간을 덜 소비 할 수 있습니다.
Darknight

4
@Darknight : @Joonas가 매우 현명한 질문을하고 있다고 생각합니다. "코딩 습관을 바꾸는 것"만으로 충분하다는 생각은 현실적이지 않습니다. 예를 들면 다음과 같습니다. ( stackoverflow.com/questions/926266/… ) 그리고 IDE없이 느린 컴퓨터에서 시간을 정할 수 있다는 아이디어는 성능 버그를 찾기에 충분하다고 가정합니다. 많은 사람들이 프로파일 링에 대해 이야기 하지만 (성공적으로) 프로파일 링 하는 것은 또 다른 문제입니다. Joonas가 요구하는 것은 저에게 정말로 도움이 될 것입니다.
Mike Dunlavey가

답변:


39

제한된 메모리와 하나의 코어 만있는 가상 머신에서 테스트를 실행하십시오.

사람들이 여전히 가지고있을 수있는 오래된 기계는 대부분 Pentium 4 시대의 것들입니다. 그것은 비현실적이지 않습니다-나는 지금 나 자신을 사용하고 있습니다. 많은 현재 PC의 단일 코어 성능은 일반적으로 그다지 좋지 않으며 더 나빠질 수 있습니다. RAM 성능은 어쨌든 많은 경우 CPU 성능보다 중요하며 이전 1GB P4보다 조금 더 엄격하게 제한하면 약간 보상합니다.

조금이라도 기꺼이 쓰려면 넷북을 구입하십시오. 그것에 대한 테스트를 실행하십시오.


1
또는 노인 노트북.

가상 시스템의 문제점은 가상 시스템 (AFAIK)이 IEEE 1394 (Firewire) 포트를 지원하지 않는다는 것입니다. 내 소프트웨어 중 일부는 파이어 와이어가 연결된 카메라를 사용합니다.
Joonas Pulakka

실제 장치를 사용하면 모든 PCI 장치를 VM에 할당 할 수 있습니다
Javier

3
가상 머신에는 호스트 O / S가 없지만 최상위 계층 인 Xen의 작업 일 수 있습니다. 유닉스 역사가 무겁지만 이제 독점 OS를 지원할 수 있습니다. 그러나 나는 그것을 사용하지 않았으며 특정 VM 성능과 리소스에 대해 얼마나 많은 제어 권한을 가질 수 있는지 모르겠습니다.
Steve314

1
+1 VM은 조정이 가능하며 테스트 후 정확하게 환경을 제공합니다. 이 목적으로 VMWare를 직접 사용합니다.
Gary Rowe

11

중요한 알고리즘 비 효율성을 파악하는 방법은 코드를 프로파일 링하는 것입니다. 메모리 남용을 파악하는 방법은 먼저 대상에 사용되는 메모리의 양을 이해 한 다음 그에 따라 디자인하고 해당 환경에서 정기적으로 테스트하는 것입니다.

스레드 코드를 작성하는 경우 CPU 속도가 다른 여러 컴퓨터에서 테스트하면 스레드 처리시 특정 타이밍 관련 버그를 강조하는 데 도움이되지만 스레드 논리의 공격적인 단위 테스트는 필수입니다.


1
아니요, 프로파일 링은 알고리즘 비 효율성을 포착하지 않습니다. 속도를 높여야하는 경우 프로그램이 시간을 보내는 위치를 보여 주지만 속도를 높여야하는 경우는 아닙니다.
David Thornley

나는 여기에 구별이 빠져 있다고 생각합니다. 프로파일 링을 통해 CPU 사이클을 소비하는 위치에 비해 최적이 아닌지 여부를 알 수 없다면 동의합니다. 그 판단을 내리기 위해서는 경험이 필요합니다.
Michael Shaw

4
@David Thornley & @Ptolemy : 알고리즘 비 효율성 또는 코드 핫스팟이 핵심 문제에 부수적 인 것으로 생각합니다. " 너무 느리거나 그렇지 않습니까?" 주관적이지만 가장 중요한 질문이기도합니다. 실제로 느리게 느껴지지 않는다면 알고리즘이 비효율적이라면 어떻게 될까요? 필요한 일을합니다! 또는 최적의 알고리즘에 관계없이 프로그램이 너무 느리게 느껴지면 접근 방식 (아키텍처? 프로그래밍 언어? 무언가!)을 모두 변경해야 할 수도 있습니다. 최적의 알고리즘을 갖는 것이 프로그램 속도 저하에 대한 변명이 아닙니다 :-)
Joonas Pulakka

1
알고리즘 비 효율성을 나타내려면 점진적 크기의 데이터 세트를 사용하여 테스트하십시오.
rwong

10

컴퓨터 속도를 늦추기 위해하는 일은 해킹 일 것입니다.

다음은 몇 가지 제안입니다.

  • 가상 머신 사용
  • 병목 현상을 찾아 컴퓨터의 코드를 프로파일 링하십시오.
  • "성능 테스트"를 위해 오래된 기계를 사용하십시오

@ 매트 무슨 뜻입니까?
johnny

1
@johnny : 제이슨이 더 느린 시스템으로 옮길 필요없이 성능 병목의 원인을 찾을 수있는 응용 프로그램 프로파일 링을 제안했기 때문에 투표를합니다.
매트 엘렌


4

이것은 꽤 오래된 질문이지만이 상황에있는 다른 사람에게는 그렇지 않다는 것을 인식하십시오. CPUKiller를 사용해보십시오. 기본적으로 프로세서의 다른 %를 소비하도록 구성 할 수있는 작은 앱입니다. http://www.cpukiller.com/

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.