프로그래밍2015. 5. 25. 01:52

예전 회사에 다닐때 VBA를 사용했었는데 책도 없고 인터넷도 사용할 수 없고 VBA도 잘 모르는 상황에서

급하게 숫자를 문자열로 만드는 로직이 필요해서 구현했었고

그 후로 이직중에 면접 문제로 비슷한 문제가 나와서 화이트 보드에 C언어로 구현해 본적이 있었다.


그러다 작년쯤에 심심해서 다음과 같이 해당 로직 그대로 C++ 템플릿으로 작성해 보았다.



물론 sprintf 방식으로 만들수 있다는 것도 알고는 있지만 이 방식으로 얼마나 빠를지가 궁금 했었고 

나중에 sprintf 방식으로도 만들어서 속도를 비교 해보려고 했었다.


이제 float과 double도 작성해야지 하고 있던 참에 std::to_string(), std::to_wstring() 을 발견하였다.

MSVS2013 기준으로 정수형은 모두 sprintf 로 구현되어 있었고 float, double, long double 도 구현되어 있었다.


그런 이유로 바로 속도 테스트 시작!


ToString Test Result

std result = count : 100, Total seconds :      0.000645, Average seconds :    0.000006, range : -9 ~ 9

std result = count : 100, Total seconds :      0.003895, Average seconds :    0.000039, range : -99 ~ 99

std result = count : 100, Total seconds :      0.043744, Average seconds :    0.000437, range : -999 ~ 999

std result = count : 100, Total seconds :      0.507521, Average seconds :    0.005075, range : -9999 ~ 9999

std result = count : 100, Total seconds :      5.388189, Average seconds :    0.053882, range : -99999 ~ 99999

std result = count : 100, Total seconds :     58.495743, Average seconds :    0.584957, range : -999999 ~ 999999

std result = count : 100, Total seconds :    648.189087, Average seconds :    6.481891, range : -9999999 ~ 9999999

std result = count : 100, Total seconds :   7002.231934, Average seconds :   70.022316, range : -99999999 ~ 99999999

std result = count : 100, Total seconds :  68199.750000, Average seconds :  681.997498, range : -999999999 ~ 999999999


Gum result = count : 100, Total seconds :      0.000341, Average seconds :    0.000003, range : -9 ~ 9

Gum result = count : 100, Total seconds :      0.002807, Average seconds :    0.000028, range : -99 ~ 99

Gum result = count : 100, Total seconds :      0.037484, Average seconds :    0.000375, range : -999 ~ 999

Gum result = count : 100, Total seconds :      0.503361, Average seconds :    0.005034, range : -9999 ~ 9999

Gum result = count : 100, Total seconds :      6.752371, Average seconds :    0.067524, range : -99999 ~ 99999

Gum result = count : 100, Total seconds :     79.450287, Average seconds :    0.794503, range : -999999 ~ 999999

Gum result = count : 100, Total seconds :    906.220520, Average seconds :    9.062205, range : -9999999 ~ 9999999

Gum result = count : 100, Total seconds :  10006.326172, Average seconds :  100.063263, range : -99999999 ~ 99999999

Gum result = count : 100, Total seconds : 102759.484375, Average seconds : 1027.594849, range : -999999999 ~ 999999999

( 각 마지막 9자리의 경우는 테스트 중에 컴퓨터를 사용했기 때문에 정확하지 않을 수 있다. )



1~3자리의 숫자는 내가 구현한 쪽이 빠르지만 4자리가 넘어가면 std::to_string() 이 더 빠르다.

( 자리수 별로 돌린게 아닌 숫자 범위로 돌렸기 때문에 -9999~9999 에 -999~999가 포함되어있다. )

Posted by 버블껌
하드웨어2014. 10. 4. 03:39



일단 회사에서 배송받아서 집에와 모토로이를 쓸때 남은 마이크로 USB 케이블을 찾아 봤는데 없었다. OTL




그래서 플레이 & 충전 키트도 주문했다.


http://support.xbox.com/ko-KR/xbox-one/accessories/controller-pc-compatibility

여기에서 드라이버를 받아서 설치하고 선만 연결하면 컴퓨터에서 잘 인식한다.


360 패드와 달라진 점으로는


1. 일단 유선 컨트롤러가 없다.

- 마이크로 USB 케이블을 연결해서 쓰면 되지만 특성상 어느정도 길지 않으면 쓰기 힘들다.

- 플레이 & 충전 키트를 샀지만 PC에서는 어짜피 케이블을 빼면 못쓰니 배터리는 무게추의 역활밖에 못한다. ( 케이블은 2.8미터 )

- 무거운게 좋다면 AA 사이즈 배터리, 중간 무게가 좋다면 충전 킷의 배터리, 가벼운게 좋다면 빼고 쓰면 된다.

- 긴 마이크로 USB 케이블이 없다고 꼭 플레이 & 충전 키트를 살 필요는 없고 그냥 긴 마이크로 USB 케이블을 사면 된다. ( 3천원에 3미터 짜리도 있더라 )


2. 트리거를 누를때 360보다 힘이 덜 들어간다.

- 360의 트리거도 실제 총의 방아쇠 보다는 가볍게 눌리지만 엑박원 패드는 더 가볍게 눌린다.

- 손가락의 피로도가 덜 쌓이게 되서 게임을 오래 할때는 더 좋을지도


3. 십자패드의 개선

- 360의 것보다 눌리는 느낌이 더 잘 느껴진다. ( 소리도 딸칵 딸칵 )


4. 살짝 달리진 그립갑

- 표면이 조금 더 매끄러운 느낌이다.

- 손에 더 잘 맞는 느낌인데 새거라서 그럴지도


5. 트리거 진동

- 일단 내가 스팀에 가지고 있는 게임중에 트리거 진동을 지원하는 게임은 없는 듯하다.

- 지원하는 게임이 나와봐야 알수 있을듯


ps. 예전에 만들었던 XBox360 패드 연습 프로그램으로 진동이 잘 안된다.

진동 반응이 많이 늦게 오고 심지어 컴퓨터가 잠깐씩 멈추는 지경

스팀에 있는 더킹 13 에서 진동이 잘 오는걸 보면 내 프로그램에 문제가 있는듯


ps2. PC용 무선 리시버가 출시 되었다.

단, 윈도우 10 만 지원된다.

Posted by 버블껌
사진2014. 9. 15. 21:58














Posted by 버블껌