블로그 이미지
안녕1999

카테고리

전체 (3067)
자바스크립트 (20)
안드로이드 (14)
WebGL (4)
변비 (17)
정치,경제 (35)
C언어,ARM (162)
컴퓨터(PC, Note Book, 윈.. (41)
전자회로, PCB (27)
유머,안웃긴,GIF,동영상 (118)
국부론60 (71)
모듈(PCB) (3)
건강 (2)
FreeCAD (25)
PADS (43)
퇴직,퇴사,구직,취업 활동 (3)
C# (86)
엑셀 (8)
워드 (0)
LabView (6)
레고 (30)
FPGA (0)
Total
Today
Yesterday

달력

« » 2024.5
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

공지사항

최근에 올라온 글

gcc 컴파일러로 프로그램 작성하는 중에,
리스트파일을 확인해보니,
함수가 여기저기 조각 조각 널려있는게 아닌가?
원래 있어야할 위치에 없고, 말그대로, 조각 조각 널려져 있었다.
-O3 옵션을 주었다.
예)
void func1(int a)
{
    ...
void func1(int a)  <<---똑같은 함수명(코드는 다름. 호출변수등에 따라 달라지는듯)
{
    ...
void func2()
{
    ...
}
    ...


결론
===========
최적화 옵션을 주면, inline 표시를 안해도, 컴파일러가, 함수를 적당한 위치에,
함수를 용도에 맞게 조각 조각 내서(또는 통째로), 끼워넣어준다.
이는 함수 호출과 리턴할때 필요한 코드를 없애, 속도를 빠르게하고, 코드사이즈를 작게하는 효과가 있다.
최적화 옵션을 주어 컴파일한다면, 굳이 inline 표시를 안해도 될듯 싶다.
(그러나, inline 옵션을 주면, inline이 꼭 필요한 함수는 거의 대부분(?) inline 적용해줄것이다.)

Posted by 안녕1999
, |

컴파일러 옵션에 "Link Incrementally" 기능이 있는경우가 있다.
이는 디버깅할때, 컴파일시간(링크시간)을 줄이기 위한 방법이다.
함수(코드)나 데이터 메모리 구간별로 어느정도 간격을 두어, 수정된 항목이 크지않다면,
해당 위치에 그냥 끼워넣는 링크 방식이다.
결과적으로 만들어진 실행파일은 좀더 커지나, 실행파일을 만들때 링크되는 시간이 감소하여,
조금더 빨리 디버깅을 할 수 있다.
디버깅할때, 컴파일(링크) 시간이 길다면, "Link Incrementally" 옵션을 켜는것이 좋다.

Posted by 안녕1999
, |

디버그모드에서 ASM코드를 보니, 3번째 코드가 가장 간결하다.
물론, 릴리즈모드에서는 어떻게 바뀔지 알 수 없다.


msg[4]=p[i];//1

msg[5]=p[i+1];//2

msg[6]=p[i+2];//3

msg[7]=p[i+3];//4

msg[8]=p[i+4];//5

msg[9]=p[i+5];//6


  msg[4]=*p;p++;//1

msg[5]=*p;p++;//2

msg[6]=*p;p++;//3

msg[7]=*p;p++;//4

msg[8]=*p;p++;//5

msg[9]=*p;p++;//6


  msg[4]=p[0];//1

msg[5]=p[1];//2

msg[6]=p[2];//3

msg[7]=p[3];//4

msg[8]=p[4];//5

msg[9]=p[5];p+=6;//6


Posted by 안녕1999
, |
2016년 10월에 새로 구입한 갤럭시 J7 2016년형 핸드폰 사진을 찍어 봤습니다.
F1.5의 밝기라고 하는데, 역시나, 어두운 데도 잘나오네요.
가장 만족스러운 기능이 이 사진 기능입니다.

촬영 속도도 매우 빨라서 좋습니다.

640x480정도의 작은 사진은 없는게 아쉽군요.
작은 사진은 크기가 작아서, 보관/관리가 편하고, 블로그 작성에도 좋습니다.
물론 아래와 같은 사진은 크게 찍어야죠.

Posted by 안녕1999
, |
기사내용(요약)

도로교통법 3

제20조

모든 차는 뒤따라오는 차보다 느리게 가려면,

도로의 우측으로 피해 진로를 양보할 의무가 있다.


제21조

다른 차를 앞지르려면,

앞차의 좌측으로 통행해야 한다.


추월하려는 차는 앞차에게 신호를 보내 의사를 표현해야 하고,

앞차는 앞지르기를 방해하면 안된다.

따라서 고속도로의 1차로는 항상 비워놔야 하며,

앞차를 추월해야 할 경우에만 1차선을 이용해야 한다. 



뒤에서 차가오면, 우측으로 비켜야한다.

- 추월할때만, 1차로 사용가능

Posted by 안녕1999
, |
갤럭시폰에서 동영상 재생속도 변경하는 방법
메뉴버튼 -> 설정

재생속도 체크

재생화면 좌측에 재생속도가 표시된다.

재생속도를 누르면 1.5배속까지 빨리 재생할 수 있다.

Posted by 안녕1999
, |

void main()

{

int a;

int b;

int c;


a=1;

b=1;

c=a+b;

...

}


위와 같은 코드가 있을때,

컴파일 속도에 영향을 미치는 요인은 어떤것들이 있을까요?


눈에는 보이지 않지만, 문장의 끝에는 \r\n 2개의 문자가 들어 있습니다.

그리고 앞에는 Tab문자가 들어 있습니다.

컴파일러는 1문자당 1바퀴 루프를 돌게 되는게 일반적입니다.

루프문 1바퀴를 돌려면, 여러가지 조건이 있고, 이 조건을 포함해서 돌게되면,

최소 몇 클럭은 필요합니다.

1문자 때문에 최소 몇클럭씩 낭비가 되는것입니다.


위 코드를 아래와 같이 바꾼다면,


void main()

{

int a,b,c;


a=1;

b=1;

c=a+b;

...

}


개행문자(\r\n) 4문자와 "int " 2개, Tab 2개가 없어졌으니,

총 4+4+4+2=14문자가 사라졌습니다.

컴파일러는 14문자만큼의 루프를 덜 돌아도 되며, CPU클럭으로 따지면, 

1문자당 3클럭으로 계산해도, 최소 42클럭이상 빨라진것입니다.

또한 소스코드를 로딩할때도 이미 소모된 클럭이 있으므로, +@로 처리시간이 단축됩니다.


여기서 조금 더 나아가면,

- 변수명을 짧게

- 불필요한 공백을 사용안함


하면 +@의 효과를 얻을 수 있습니다.

물론, 코드의 가독성은 떨어집니다.

적당히 줄이세요.


"그거 줄여봐야 얼마나 되겠어?"

"요즘 CPU가 얼마나 빠른데?"


하시겠지만, 이런 수천 라인의 소스파일, 수천개를, 컴파일하게되면, 분명히 시간차이가 발생합니다.


또한, 파일에 저장하기위한 공간도 줄어듦니다.


무리하게 할 필요는 없고, 지금부터라도, 불필요한 공백은 자제합시다.



요약 : 불필요한 중복된 문자(동일한 변수형 반복), 불필요한 개행문자, 긴 변수명은 자제하자.





우스개 소리로, 예전에 마이크로 소프트사와 유닉스 진영에서 개행문자(\r\n)에 대한 논의(?)가 있었습니다.

유닉스진영에서는 개행문자가 \n 1바이트입니다만, 마이크로 소프으 윈도우에서는 \r\n 2바이트입니다.


컴퓨터에 있는 파일의 적지않은 용량의 파일이 택스트 문서이고,

해당 문서에서 개행문자때문에 소모되는 공간도 무시할 수 없다는 것입니다.

지구상의 모든 컴퓨터의 하드디스크에서 무시할 수 없는 공간이 낭비된다는 것입니다.

하드디스크 공간이 비약적으로 늘어나서, 그 피해가 너무 작을뿐, 낭비되는것은 맞습니다.


마이크로 소프트사에서는 이 문제 때문에, \r\n을 \n 으로 바꾸려는 시도를 하기도 했었습니다만, 엑셀, 비쥬얼베이직 같은 프로그램에서 문제가 발생하여, 중단한것으로 알고 있습니다.


유니코드문자를 사용하는 요즘에는 2배로 낭비되고 있습니다. ㅎㅎ

Posted by 안녕1999
, |


원래 윈도우7이 기본인 노트북인데, 느린관계로, XP로 다운그레이드

XP설치할때, SATA는 ACHI로하면 에러난다고함. CMOS setup에서 변경해주어야함.


어쨌든 계속된 블루스크린때문에, 윈도우XP CD를 다른 버젼으로 바꾸었더니, 성공.


CD롬 인식 잘안되는 문제는 여전함.(윈도우 문제가 아니라, CD롬 기계 문제)


체감속도는 쌩쌩 날라감~

Posted by 안녕1999
, |

인터넷 속도

카테고리 없음 / 2016. 6. 19. 16:00

10Mbps

100Mbps

1Gbps


흔히 말하는 인터넷 속도이다.

그러나 실제로, 1Gbps 속도가 나오는 사람은 없다.

왜 그럴까?


가장 많이 사용하는 100Mbps에 대해 알아보자.

100M bit per second

즉, 1초에 100M비트를 전송할 수 있다.

그러나 이는 사실과 다르다.

100Mbps는 100MHz 클럭으로 데이터가 전송되며,

NRZ등의 방식으로 전송시, 실제 속도보다 더 많이 전송할 수 도 있다.

데이터 압축이 조금 될 수 있다.

어째든 이런 통신방식(프로토콜)은 제외하고, 그냥 100M bit per second라고 치고,

1초에 100M 비트를 전송하지만,

우리가 흔히 알고 있는 이더넷의 경우, 

1개의 패킷은 약 1492바이트이며, 이는 헤더포함이다.

"에이~ 헤더는 얼마 안되네?"

패킷 헤더는 약 20~40바이트 고정이다.(프로토콜마다 조금씩 다름)

1460/1492=0.978552

즉 약 2%는 패킷 헤더로, 실제 데이터는 약 98%이다.

이는 패킷당이며, 패킷에 데이터가 1460바이트 꽊채워 보낼때 해당하는 사항이다.

작은 데이터를 자주 보내면, 패킷헤더의 비율이 커져, 실제 전송대역폭이 크게 줄어든다.

10바이트 데이터를 자주 전송하면, 헤더가 40바이트이므로, 배보다 배꼽이 큰 상황이 벌어집니다.


어쨋든, 100Mbps로 전송을 해도, 실제 데이터는 이론상 최대 약 98%인 98Mbps만 전송이 가능합니다.

그러나 여기서 또 몇가지를 빼야합니다.

데이터 전송오류(충돌)

이더넷 방식은 데이터 충돌을 인정하고, 오류발생시, 재전송을 하게 됩니다.

이렇게, 네트워크 전송을 하기위해 장비들끼리 부가적으로 통신을 하게되고,

이런 절차에 의해, 실제 대역폭이 또 줄어듦니다.


게다가, 또, PC나 핸드폰등에서 전송버퍼등의 부족, 패킷 분석등으로 고성능 PC(하드웨어)가 아니면, 이또한 처리를 다 하기가 어렵습니다.

그래서 보통 100Mbps일때 약 60~80%정도를 최대 전송량이라고 봅니다.(이는 장비, 시대, 장소에 따라 차이가 있음)


간단하게 PC2대를 직접 연결하여 파일전송을 해보면,

윈도우가 파일 처리를 하는데 대역폭을 또 소비합니다.

실제 파일만 전송이 되는게 아니고, 여러가지 부가정보 및 프로토콜 정보도 전송이 됩니다.

그러다 보니, 잘해야 10Mbyte정도 속도가 나옵니다.

1byte는 8bit이므로, 약 80Mbps정도라고 할 수 있습니다.

이는 PC를 직접 연결했을때, 일이고, 공유기나 허브등을 거치면, 수치는 또 떨어집니다.

PC사양에도 영향을 받습니다.



Gbps로 동작하면 더 빠를것이다?

고주파대역에서는 노이즈에 더 취약합니다.

예를 들어 1비트 전송시간이 1/1GHz이므로 0.000000001초만 노이즈가 발생해도, 1비트 오류가 납니다.

1비트 오류는 1패킷을 재전송해야하고, 그것도 쌍방이 합의해서 해야하니, 시간이 배는 걸립니다.

그러다보니, 10Mbps때보다도 실제 대역폭 비율은 상당히 낮아집니다.(주의 : 비율입니다.)

빨라지기는 하지만, 주변에 노이즈원이 많다면, 생각보다는 매우 많이 낮은 성능이 나옵니다.



Gbps로 동작해서 좋은점

전송속도가 빨라질 수 록 딜레이(레이턴시) 가 줄어듧니다.

100Mbps일때, "야~"하고 소리치면, 반대쪽에서 들릴때 "야~"하고 들리려면, 0.01초가 걸린다고 가정하면,

1Gbps일때는 같은 시간에 "야~"를 1000번을 더 말할 수 있습니다.

그러므로, 더 빨리 반응이 옵니다.


더 정확히 말하면, 100Mbps에서는 0.01초가 지나야, "야~"소리를 들을 수 있지만,

(그전에는 아무 소리도 못들음)

1Gbps에서는 "야------------------------아----------------------------"하고 계속 바뀝니다.


이는, 프로 디지털 음향기기에서 100Mbps대역도 충분한데, 굳이 Gbps 장비를 사용하는 이유가 됩니다.

또한, 오디오에서 48kHz샘플링 보다 더 높은 96kHz샘플링을 사용하면, 더빠른 반응을 얻을 수 있어, 레이턴시가 줄어드는 효과가 나타납니다.


Gbps로 동작해서 나쁜점

전송속도가 빨라질 수 록 주파수가 높아지고, 주파수가 높아질 수 록 에너지 효율이 떨어집니다.

빠를 수록 전기를 많이 소모한다는 말입니다.

쉽게 말해서, 속도가 빠른 공유기는 발열도 심합니다.

요즘 Gbps대역의 공유기들은 저소비전력과 방열이 화두입니다.

에너지 효율로 따지면, 10Mbps로 전송하는것이 가장 유리합니다.

전력면에서는 데이터가 적으면, 저속으로 통신하는것이 유리합니다.


또한, 노이즈에 민감해집니다.

10Mbps에서는 100MHz대역의 노이즈는 문제가 안됩니다만,

Gbps에서는 100MHz대역의 노이즈는 치명적일 수 있습니다.


무선 100Mbps 인터넷속도와 유선 100Mbps속도는 다르다?

유선과 무선의 차이점은 무선은 노이즈 영향을 많이 받습니다.

유선은 상대적으로 적게 받습니다.

노이즈 영향으로 패킷 오류등이 더 많이 발생하여, 무선은 유선보다 근본적으로 더 느립니다.

보통 Wi-Fi는 약 40,80Mbps의 성능이며, 160Mbps(급)등의 Wi-Fi도 있으나, 이는 핸드폰등이 이 속도를 지원해야 사용 가능한 속도입니다.

가정에서 노트북으로 Wi-Fi를 사용하면, 대부분 유선인터넷보다 느립니다.(몇년 후에는 달라지겠네요)

100Mbps 공유기에서 나오는 무선 Wi-Fi속도는 100bps가 아닙니다.(대부분 40~80Mbps)


Posted by 안녕1999
, |

최근에 달린 댓글

글 보관함