바인딩과 성능에 대해서

klara의 이미지

예를 들어, Qt같은 경우, 루비바인딩, 파이썬바인딩, 자바바인딩 등이 존재하는데요, 바인딩의 경우 성능은 어떻게 되나요?

원래 Qt의 경우는 C++이니까 컴파일해서 네이티브코드로 돌리는데, '바인딩'한 것은 어떻게 되는지 궁금합니다.

사실 바인딩이 뭔지를 잘 몰라서, 바인딩이란게 단순히 다른 언어로도 쓸수 있게 하는 것을 말하는 것인지, 아니면 같은 기능을 하는 라이브러리를 다른 언어로 재작성 한것인지...

만약에 전자라면 본래 Qt와 그 바인딩인 PyQt(파이썬바인딩)이나 Jambi(자바바인딩)와의 성능 차이는 별로 없을 테고, 후자라면 원래 Qt의 성능과는 상관없이 바인딩언어의 성능대로 나올태니, 인터프리터언어인 파이썬이나 JVM에서 돌아가는 자바를 이용한 바인딩은 본래의 Qt보다 약간 퍼포먼스가 떨어질것도 같고...

어느쪽이 맞는건가요...? 아니면 바인딩이란게 제가 생각하고 있는 것과는 전혀 다른 건가요?

뭐 예로 Qt를 들긴 했지만, 실제로 쓰고 있고 관심있는 것도 Qt이므로, 그냥 단도직입적으로 얘기해보자면, Qt(혹은 다른 라이브러리들)와 그 바인딩들의 바인딩언어에 따른 성능에 대해 알려주시면 감사하겠습니다.

ganadist의 이미지

보통 바인딩이라 함은 어떤 라이브러리의 기능을 다른 언어에서 쓰게 해주는 다리(bridge)역할을 가르킵니다.

해당 기능은 그대로 사용하게 하면서 기본 자료형을 해당 언어에 맞게 변환시켜주는 역할이죠.

대부분 기능 자체는 오버헤드가 없습니다만, 기본 자료형을 해당 언어에 맞게 변환시켜주는 데서 오버헤드가 생깁니다.

물론 대부분의 경우에는 위의 오버헤드 정도는 해당 언어의 장점으로 커버가 됩니다.

----
Do not feed troll!

----
데스크탑 프로그래머를 꿈꾸는 임베디드 삽질러

klara의 이미지

답변감사합니다.

말씀하신걸 제대로 이해한건지 모르겠는데요, 예를 들어 C++로 작성된 문자열에 대한 라이브러리 바인딩이라면, C++에서 사용하는 char*혹은 wchar*를 다른 언어에서 사용하는 문자열을 위한 자료형으로 바꾸는 정도이고, 실제로 그 클래스내의 함수등의 구현은 구현은 원래 언어로 되어있다는 것인가요...?

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.