IPC 프로세스간 통신 방법 중에 제일 빠른 게 뭔가요?

cleansugar의 이미지

http://en.wikipedia.org/wiki/Inter-process_communication

File Most operating systems
Signal Most operating systems; some systems, such as Windows, implement signals in only the C run-time library and provide no support for their use as an IPC method[citation needed]
Socket Most operating systems
Message queue Most operating systems
Pipe All POSIX systems, Windows
Named pipe All POSIX systems, Windows
Semaphore All POSIX systems, Windows
Shared memory All POSIX systems, Windows
Message passing
(shared nothing) Used in MPI paradigm, Java RMI, CORBA, MSMQ, MailSlots, QNX, others
Memory-mapped file All POSIX systems, Windows

여기에 다양한 아이피씨 방법이 있습니다.

웹 로봇으로 수집한 정보를 가공해 홈페이지에 표시해줄 때 로봇과 홈페이지 언어가 달라서 IPC를 써야 합니다.

이 때 제일 빠른 방법은 무엇일까요?

파이프는 느린가요?

ymir의 이미지

아무래도 shared memory 가 제일 빠를 것 같네요.

다른 address space 로 데이터 복사가 일어나지 않으니..

---
음.. 바보같은 댓글을 달았군요. 언어가 다르다는 문구를 주의깊게 못봤네요.

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

jick의 이미지

shared memory는 언어가 달라도 가능해요. 바이너리 포맷을 잘~ 정하면 되죠.

ymir의 이미지

홈페이지 언어라길래 php 나 jsp 가 떠오르길래, 얘네들은 잘 몰라서 일단 지웠는데..;;
검색해 보니 php 에서는 지원해주는군요... ㅎ~;;

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

hothead의 이미지

확장성을 고려한다면 RPC(Java RMI)가 무난하네요.

처리해야 하는 데이터가 많다면 단일 인스턴스로는 성능 향상 한계가 있습니다.

cleansugar의 이미지

고맙습니다.

공부가 필요한 듯 싶습니다.

재벌 2세가 재벌이 될 확률과
금메달리스트 2세가 금메달을 딸 확률이 비슷해지도록
자유오픈소스 대안화폐를 씁시다.

아이디의 아이디어 무한도전
http://blog.aaidee.com

귀태닷컴
http://www.gwitae.com

sblade의 이미지

데이터 스트림이 매우 dynamic 한 경우가 아니라면 json 으로 램디스크에 저장하고 읽는 방법을 생각해보길 권해드립니다. 생각보다 훨씬 빠릅니다.

익명 사용자의 이미지

공유메모리나 mmap, 메세지박스, 시그널등 ipc 방식을 사용하셔도 되지만

zeromq 라는 라이브러리는 이를 더 편하게 사용할 수 있도록 되어있는데요.

tcp, ipc 등 지원하고 자바, c, c++ , 파이썬, 루비등 여러언어에서 지원하는 걸로 알고 있습니다.

직접 데이터 구조를 정의해서 구현하시는 것도 좋지만 안정적인 라이브러리를 활용하시는 것이 버그나 구현 속도에서 나을 것 같습니다.

댓글 달기

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