어떤 코드가 좋은 코드일까요? 리눅스 프로그램 top 으로 비교하였을경우

timul16의 이미지

같은 기능을 하는 두개의 프로그램을 테스트 해봤는데요
top으로 보면서 비교해봤습니다

비교 기준은 CPU%와 코드가독성 정도인데요

프로그램 1 : CPU :45%정도를 나타내며, 소스가 가독성이 편리합니다. 제가 딱봐도 쉽게 짜여진코드 깔끔하게 간결한코드

프로그램 2 : CPU : 35%정도를 나타내며, 가독성이 쉽지 않습니다. 코드가 지저분한 느낌

지금 프로그램2로 계속 쓰다가 프로그램1로 사용중인데요
가독성이 편하고 왠지 깔끔하다는 느낌에 top명령으로 보니 CPU부하율정도의 차이가 조금 있는데요
어떤것이 더 괜찮은걸까요?

라스코니의 이미지

난다면 적지 않은 차이가 난다고 생각되는데요.

UDP/TCP, File I/O가 있다면 그 차이가 제일 클 것이라 생각되고요,,,,

그외에는.....

malloc(), 버퍼 관리 등.....
그런 부분에서 차이가 온다고 볼 수 있죠.

결론은 깔끔하게 짜여진 코드가 느릴 이유는 없다라는 겁니다.

mirheekl의 이미지


여러사람이 대충 스파게티처럼 작성해놔서 가독성이 떨어질 수도 있지만

그냥 여러가지 최적화 및 고급 테크닉을 사용했고 주석에 인색하고 사용하는 라이브러리나 인덴트 방식이 자신이 주로 쓰던 것과 다르게 되어 있으면 이역시 가독성이 떨어지는 훌륭한 원인이 됩니다.

전자는 성능에 당연히 악영향을 미치겠고 후자는 그 반대겠죠. 결국 가독성과 코드 성능의 상관관계는 별로 없다는 생각입니다. 뒤집어 말하면 깔끔하게 짰다고 느릴 이유는 없지만 그렇다고 빠를 이유도 없다는 것.

--

익명 사용자의 이미지

가독성을 따질 때 코드가 간결하다는 건 겉보기일 뿐이고, 정확히는 중복이 얼만큼 잘 제거되었느냐로 따져야하죠.
그래서 가독성은 아는 만큼 보인다라는 말이 딱 적용됩니다.

중복이 잘 제거되어 있다면 느릴 이유가 없지만, 사실 언어적으로 지원하지 않는 중복제거 방법을 쓰면 느릴 수도 있습니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.