Go에서 Benchmarking Raspberry Pi Zero W GPIO Speed
4659 단어 RaspberryPiGo
이 연구는 GPIO를 간단하게 전환하고 1Clock의 주파수를 얻는다.
2018/4/29 리뷰에서 C 컴파일러의 최적화 옵션을 사용하는 것이 좋기 때문에 WiringPi-Go로 추가 검증을 진행합니다
for {
pin.Toggle()
}
조사 결과
C 언어 참조 WiringPi
결과는 6MHz입니다.상당히 빠르다.(코드는 팔꿈치 마디가 아닌 아래에서 참조하는 Hi/Low 쓰기 순환입니다.)
벤치마킹 라즈베리 파이 GPIO 속도 참조
결과는 10KHz로 느리다.점공비도 좋지 않다.
하지만 이 라이브러리는 I2C, SPI, 센서 등 위젯을 지원하는 초보자들에게 친근한 라이브러리로 GitHub 스타도 많다.oled의 동작 확인이 당신의 보살핌을 받았기 때문에 지지하고 싶습니다
공식 샘플 코드의 내용은 Hello World 정도인데 좀 아쉽다.
결과는 400KHz입니다.C의 1/10 이하와 외로움의 결과
결과는 340KHz입니다.C의 BCM2835는 WiringPi보다 빠를 텐데 왜 그러지 않을까... 그냥 bcm2835나 CFO로 C를 호출하는 것 같은데 비용이 너무 많이 들어요.
결과는 200KHz입니다.역시 씀씀이가 크다.
이후 원본 코드를 수정해야 합니다.
WiringPi-Go 소스에 최적화 옵션 추가 및 재검사
결과는 300KHz의 효과가 있다.하지만 지난번 코드를 실행하면 250KHz이기 때문에 효과는 20%입니다.
package rpi
/*
#cgo CFLAGS: -g -O3 -std=c99
#cgo LDFLAGS: -lwiringPi
CFO를 처음 만져보는 옵션이라 적절한 방법인지 모르겠습니다.적당히 다시 쓰면 Go컴파일러한테 혼나고 결과도 바뀌니까 괜찮겠지
CFO의 옵션은 댓글로 쓸 수 있나
후기
고라면 C에 가까운 성능을 낼 수 있기 때문에 고신도인 ※ 저에게는 고통스러운 현실입니다.아, 라즈파는 I2C와 SPI를 쓰면 돼요.
※ 작업상.넷만 만지니까 Go는 영원히 기억이 안 나지만 Go의 디자인 사상은 나를 감동시켰다.평소에 안 쓰니까 기억이 안 나요.
따라서 Go가 조금 더 빠른 GPIO를 원한다면 go-rpio 를 사용하세요.
참고로 Toggle보다 High/Low를 쓰는 것이 10퍼센트 정도 빠릅니다.
Toggle은 전환하기 전에 if문장에 들어가기 때문에 속도가 떨어질 것 같습니다.
for {
pin.High()
pin.Low()
}
상관없어, ZeroW도 소니가 만든 것 같아.Reference
이 문제에 관하여(Go에서 Benchmarking Raspberry Pi Zero W GPIO Speed), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/WaToI/items/16938a611f7c026c477d텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)