다른 프로그래밍 언어로 작성된 라이브러리에서 성능 테스트를 수행하는 방법은 무엇입니까?

StackOverflow https://stackoverflow.com/questions/789376

문제

문제는: 유사하거나 동일한 범위를 가진 여러 개의 프로그래밍 라이브러리가 제공됩니다 (예 : XML Parser, Regex, Markup, ...); 라이브러리가 다른 프로그래밍 언어 (예 : Java, C#, Ruby, Python, Perl, ... 등)로 작성 될 수 있지만, 이러한 라이브러리에서 성능 테스트를 실행하고 보고서를 생성 할 수있는 도구가 있습니까? ?

나는 이것을 보았다 OpenSourcetesting.org/performance.php, 그러나 그들 중 어느 것도 위의 (다소 흐릿한) 요구 사항에 적합하지 않았습니다.

언어 교차 플랫폼 성능 테스트를위한 툴킷이나 프레임 워크가 있습니까?

감사.

도움이 되었습니까?

해결책

여러 언어에 단일 툴킷을 사용하려고하지 않을 것입니다. 각 앱에 대한 최고의 (또는 평균) 성능을 이끌어내는 것은 거의 없습니다.

대신, 나는 테스트 할 내용을 정의하고 공통 데이터 세트를 갖는 프레임 워크 설계를 생각해 내려고 노력할 것입니다. 그러면 각 언어/라이브러리는 자체 프레임 워크를 제공 할 수 있습니다. 구현 해당 라이브러리에 적합한 작업을 테스트합니다. 그렇게하면 운영이 사용하지 않더라도 "논리적으로 동등한"일 수 있습니다. 정확한 동일한 구문/호출. 당신은 결국 테스트합니다 관용 가장 낮은 공통 분모가 아닌 해당 라이브러리/언어에 대한 코드.

이것이 벤치마킹 프로토콜 버퍼에 대한 접근 방식입니다. 지금까지 나의 기본 프레임 워크에는 C#과 Java에서 구현이 있으며, 이제 전체 "벤치 마크 스크립트"를 실행할 수있는 더 풍부한 프레임 워크를 작성하고 있습니다. 한 가지 이상적인 목표는 동일한 플랫폼 내의 다른 구현 (예 : 프로토콜 버퍼의 다른 .NET 구현)이 거의 노력하지 않고 동일한 핵심 벤치마킹 코드에 연결할 수 있어야한다는 것입니다.

내 마음에 중요한 것은 일반적인 운영 세트를 갖는 것입니다. 모두 구현 모두 라이브러리) 및 공통 데이터 세트. 이것이 바로 벤치 마크가 의미가있을 수있는 유일한 방법입니다.

다른 팁

가능하면 어떤 형태의 종속성 주입을 사용하여 한 모듈을 연결하고 다른 모듈로 전환 할 수 있습니다. 그 전에 해당 라이브러리에 고유 한 인터페이스를 만들어야합니다. 긍정적 인 측면에서, 이전 인터페이스를 벤치마킹하려면 완전한 인터페이스가 완료 될 필요는 없지만 Perf 일 때 가장 유익 할 것이라고 생각하는 것을 노출시키기 만하면됩니다. 문제가 있습니다.

능력은 사용 된 언어에 크게 의존합니다.

나는 인공 시험을 좋아하지 않습니다. 그들은 대부분의 시간이 부정확 한 IMO이며, 사람들은 하나의 라이브러리 기능이 다른 라이브러리 기능보다 다소 다르지만 둘 다 같은 것처럼 보입니다. 나는 그런 종류의 재산이없는 벤치 마크를 거의 만나지 않습니다.

다른 쪽에서는 완전히 더 나은 라이브러리와 같은 것은 거의 없습니다. 많은 라이브러리는 다른 유사한 라이브러리가 빨라질 수있는 일부 시나리오에서 우수한 성능을 제시합니다.

따라서 성능이 앱에서 가장 중요한 경우 IMO를 수행하는 가장 좋은 방법은 가져올 작업을위한 인터페이스를 작성한 다음 플러그인/몇 개의 라이브러리를 사용하여 실제 벤치 마크, 벤치 마크의 차이점을 확인하는 것입니다. 앱이 작동하지 않습니다. 인공 수학 Mumbo 점보 ...

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top