Giter Site home page Giter Site logo

cpp_cli_benchmark's Introduction

벤치마크 프로그램

C++로 만든 벤치마크 프로그램입니다. 여러가지 연산과 작업에 걸리는 시간을 측정해 성능이 얼마나 되는지 확인해 볼 수 있습니다.

진행되는 연산/작업

프로그램이 수행하는 연산/작업은 다음과 같습니다.

  1. (연산) 1부터 300억까지 더하기
  2. (연산) 원주율(π) 구하기
  3. (작업) waifu2x-converter-cpp로 업스케일링
  4. (작업) 압축/압축해제
  5. (연산) 무리수 e 구하기
  6. (작업) 암호 걸린 압축파일 암호 찾기
  • 번외 - (작업) 다운로드 속도 측정

이후 기능들은 추가/변경/삭제 될 수 있습니다.

자세한 설명은 아래의 문단을 확인하세요.

(연산) 1부터 300억까지 더하기

1부터 300억까지 더하는 연산을 수행합니다. 1+2+3+4+···+300억 이런식으로 연산을 시킵니다. 해당 부분의 코드는 다음과 같습니다.

    long long i = 0;
    long long sums = 0;
    for (i = 1; i <= 30000000000; i++) { //1부터 30000000000까지 반복
        sums += i; //sums=sums+i
    }

여기서 변수 isums의 자료형은 int가 아닌 long long을 사용했는데, 그 이유는 int가 표시할 수 있는 범위는 -2,147,483,647 ~ +2,147,483,647까지이기에 30억은 int가 표시할 수 있는 범위인 약 21억을 초과하기에 long long을 사용한 것입니다. 참고로 long long이 표시할 수 있는 범위는 -9,223,372,036,854,775,808 ~ +9,223,372,036,854,775,808입니다.

(연산) 원주율(π) 구하기

오일러의 곱셈 공식으로 원주율을 계산합니다. 1부터 무한대까지 제곱한 뒤 역수로 만들어 각각 곱한 뒤, 6을 곱하고, 그 값에 루트를 씌우면 파이가 나옵니다. 이걸 식으로 나타내면 다음과 같습니다.

image

이걸 N번 반복하면 원주율을 구할 수 있는데, 본 프로그램이 설정한 N의 값은 현재 1000000000입니다.

해당 코드는 다음과 같습니다.

    double pi=0.0,num=1.0;

    while (num < 1000000000)
    {
        pi += 1.0 / pow(num, 2.0);
        num += 1.0;
    }

(작업) waifu2x-converter-cpp로 업스케일링

waifu2x-converter-cpp을 이용하여 작은 크기의 이미지를 40배 업스케일링합니다. 원본 이미지의 정보는 다음과 같습니다.

  • 파일 형식 : PNG
  • 크기 : 300 x 168(px)

업스케일링된 이미지의 정보는 다음과 같습니다.

  • 파일 형식 : PNG
  • 크기 : 12,000 x 6,720(px)

(작업) 압축/압축해제

7z.exe를 사용하여 파일을 압축/압축해제합니다.

압축될 폴더 정보는 다음과 같습니다.

  • 파일 갯수 : 100개
  • 크기 : 100MB x 25개, 500MB x 25개, 총 15,000MB(약 14.6GB)

압축할 포맷의 정보입니다.

  1. 7z - 압축률 최대, 모든 스레드 사용
  2. zip - 압축률 최대, 모든 스레드 사용

(연산) 무리수 e 구하기

무리수 e를 구합니다. e는 오일러 공식을 이용해 구할 수 있는데, 오일러 공식은 다음과 같습니다.

image

이걸 N번 반복하면 원주율을 구할 수 있는데, 본 프로그램이 설정한 N의 값은 현재 130000입니다.

해당 코드는 다음과 같습니다.

double factorial(double a);
int ntimes = 130000;
    int add;
    double j, surd_e;
    surd_e = 1;

    for (add = 1; add <= ntimes; add++)
    {
        j = 1 / factorial(add);
        surd_e = surd_e + j;
    }

    double factorial(double a)
{
    double add, j;
    j = 1;
    for (add = 1; add <= a; add++)
    {
        j = j * add;
    }
    return j;
}

(작업) 암호 걸린 압축파일 암호 찾기

암호가 걸린 압축파일의 암호를 찾습니다. John the Ripper 프로그램으로 브루트 포스(brute force, 무차별 대입)로 암호를 찾습니다.

암호가 걸린 파일의 정보입니다.

파일명 : test.zip 파일 내용 : test.txt 비밀번호 : o6

번외 - (작업) 파일 다운로드

다운로드 속도는 통신사에 가입되어 있는 서비스에 따라 다르기 때문에 점수에 반영하지는 않고, 따로 측정만 합니다.

파일을 다운로드받는데 얼마나 걸리는지 시간을 측정합니다. 네트워크 상황에 따라 걸리는 시간이 다를 수 있습니다. 해외 서버에서 파일을 다운로드하는 경우, 통신사, 시간대에 따라 다르기 때문에 국내 서버에서 파일을 다운로드 받는 것으로 하였습니다. 해당 코드는 다음과 같습니다.

URLDownloadToFile(NULL, L"https://sel-kor-ping.vultr.com/vultr.com.1000MB.bin", L"./testfile.bin", 0, NULL);

vultr사의 속도 테스트 페이지에서 국내(서울 서버)에서 파일을 다운로드 받습니다. 해당 파일의 용량은 1000MB입니다.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.