সকলেই বলে মনে হচ্ছে নামযুক্ত পাইপগুলি সকেটের আইপিসির চেয়ে দ্রুত। তারা কত দ্রুত? আমি সকেটগুলি ব্যবহার করতে পছন্দ করব কারণ তারা দ্বিমুখী যোগাযোগ করতে পারে এবং খুব নমনীয় তবে এটি যদি যথেষ্ট পরিমাণে হয় তবে নমনীয়তার চেয়ে গতি বেছে নেব।
সকলেই বলে মনে হচ্ছে নামযুক্ত পাইপগুলি সকেটের আইপিসির চেয়ে দ্রুত। তারা কত দ্রুত? আমি সকেটগুলি ব্যবহার করতে পছন্দ করব কারণ তারা দ্বিমুখী যোগাযোগ করতে পারে এবং খুব নমনীয় তবে এটি যদি যথেষ্ট পরিমাণে হয় তবে নমনীয়তার চেয়ে গতি বেছে নেব।
উত্তর:
আমি আপনাকে প্রথমে সহজ পথটি গ্রহণের পরামর্শ দিচ্ছি, সাবধানতার সাথে আইপিসি প্রক্রিয়াটি পৃথক করে রাখুন যাতে আপনি সকেট থেকে পাইপতে পরিবর্তন করতে পারেন, তবে আমি অবশ্যই প্রথমে সকেটের সাথে যেতে চাই। প্রাক্প্রটিভ অপ্টিমাইজ করার আগে আপনার অবশ্যই নিশ্চিত হওয়া উচিত যে আইপিসি পারফরম্যান্স একটি সমস্যা।
এবং আপনি যদি আইপিসির গতির কারণে সমস্যায় পড়ে থাকেন তবে আমি মনে করি আপনার পাইপ না গিয়ে ভাগ করে নেওয়া স্মৃতিতে স্যুইচ করা বিবেচনা করা উচিত।
আপনি যদি কিছু ট্রান্সফার স্পিড টেস্টিং করতে চান তবে আপনার সকেটটি চেষ্টা করা উচিত , এটি একটি বহুমুখী প্রোগ্রাম যা আপনাকে প্রায় কোনও প্রকারের টানেল তৈরি করতে দেয়।
ভাগ করা মেমোরি সহ সেরা ফলাফল আপনি পাবেন সমাধান ।
নামযুক্ত পাইপগুলি টিসিপি সকেটের চেয়ে 16% ভাল ।
আইপিসি বেঞ্চমার্কিংয়ের সাথে ফলাফলগুলি পাওয়া যায় :
পাইপ বেঞ্চমার্ক:
Message size: 128
Message count: 1000000
Total duration: 27367.454 ms
Average duration: 27.319 us
Minimum duration: 5.888 us
Maximum duration: 15763.712 us
Standard deviation: 26.664 us
Message rate: 36539 msg/s
ফিফস (নামযুক্ত পাইপস) মাপদণ্ড:
Message size: 128
Message count: 1000000
Total duration: 38100.093 ms
Average duration: 38.025 us
Minimum duration: 6.656 us
Maximum duration: 27415.040 us
Standard deviation: 91.614 us
Message rate: 26246 msg/s
বার্তা সারি বেঞ্চমার্ক:
Message size: 128
Message count: 1000000
Total duration: 14723.159 ms
Average duration: 14.675 us
Minimum duration: 3.840 us
Maximum duration: 17437.184 us
Standard deviation: 53.615 us
Message rate: 67920 msg/s
ভাগ করা মেমরি বেঞ্চমার্ক:
Message size: 128
Message count: 1000000
Total duration: 261.650 ms
Average duration: 0.238 us
Minimum duration: 0.000 us
Maximum duration: 10092.032 us
Standard deviation: 22.095 us
Message rate: 3821893 msg/s
টিসিপি সকেট মানদণ্ড:
Message size: 128
Message count: 1000000
Total duration: 44477.257 ms
Average duration: 44.391 us
Minimum duration: 11.520 us
Maximum duration: 15863.296 us
Standard deviation: 44.905 us
Message rate: 22483 msg/s
ইউনিক্স ডোমেন সকেট মানদণ্ড:
Message size: 128
Message count: 1000000
Total duration: 24579.846 ms
Average duration: 24.531 us
Minimum duration: 2.560 us
Maximum duration: 15932.928 us
Standard deviation: 37.854 us
Message rate: 40683 msg/s
জিরোমিকিউ মানদণ্ড:
Message size: 128
Message count: 1000000
Total duration: 64872.327 ms
Average duration: 64.808 us
Minimum duration: 23.552 us
Maximum duration: 16443.392 us
Standard deviation: 133.483 us
Message rate: 15414 msg/s
আমি শোডেনেক্সের সাথে একমত হতে চলেছি, দেখে মনে হচ্ছে আপনি অকাল থেকে এমন কোনও বিষয় অনুকূলিত করার চেষ্টা করছেন যা এখনও সমস্যাযুক্ত নয়। যদি না আপনি জানেন সকেটগুলি একটি বাধা হয়ে উঠবে, আমি কেবল সেগুলি ব্যবহার করব।
নামযুক্ত পাইপের দ্বারা শপথ করে প্রচুর লোকেরা কিছুটা সঞ্চয় সঞ্চয় খুঁজে পান (সমস্ত কিছু কত ভালভাবে লেখা হয় তার উপর নির্ভর করে) তবে কোডটি শেষ করুন যা কোনও আইপিসি উত্তর দেওয়ার জন্য কার্যকর কাজ করার চেয়ে বেশি সময় ব্যয় করতে ব্যয় করে। অবশ্যই, নন-ব্লকিং স্কিমগুলি এটিকে সহায়তা করে তবে এগুলি জটিল হতে পারে। আধুনিক যুগে পুরানো কোড আনার কয়েক বছর ব্যয় করে, আমি বলতে পারি, আমি দেখেছি বেশিরভাগ ক্ষেত্রেই স্পিডআপ প্রায় শূন্য।
যদি আপনি সত্যিই ভাবেন যে সকেটগুলি আপনাকে ধীর করে দিচ্ছে, তবে আপনি কীভাবে লক ব্যবহার করবেন সে সম্পর্কে যত্ন সহকারে মনোযোগ সহ ভাগ করে নেওয়া মেমরি ব্যবহার করে গেটের বাইরে যান। আবার, সমস্ত বাস্তবতায়, আপনি একটি সামান্য দ্রুতগতি পেতে পারেন তবে লক্ষ্য করুন যে আপনি পারস্পরিক বর্জনীয় লকের জন্য অপেক্ষা করে এর একটি অংশ নষ্ট করছেন। আমি ফিউটেক্স নরকের ভ্রমণের পক্ষে যাচ্ছি না (ভাল, বেশ নয়) আপনার অভিজ্ঞতার উপর নির্ভর করে ২০১৫ সালে আর নরক নয়)।
পাউন্ডের জন্য পাউন্ড, সকেটগুলি (প্রায়) সর্বদা একরঙা কার্নেলের অধীনে ব্যবহারকারীর স্পেস আইপিসি যাওয়ার সবচেয়ে ভাল উপায় .. এবং (সাধারণত) ডিবাগ করা এবং বজায় রাখা সবচেয়ে সহজ।
মনে রাখবেন যে সকেটগুলি অগত্যা আইপি (এবং টিসিপি বা ইউডিপি) বোঝায় না। আপনি ইউনিক্স সকেট (PF_UNIX) ব্যবহার করতে পারেন, যা 127.0.0.1 এ সংযোগ স্থাপনের তুলনায় লক্ষণীয় পারফরম্যান্স উন্নতি প্রস্তাব করে
প্রায়শই, সংখ্যাগুলি অনুভূতির চেয়ে বেশি বলে, এখানে কিছু তথ্য রয়েছে: পাইপ বনাম ইউনিক্স সকেট পারফরম্যান্স (opendmx.net) ।
এই মানদণ্ড পাইপগুলির জন্য প্রায় 12 থেকে 15% দ্রুত গতির পার্থক্য দেখায়।
নামযুক্ত পাইপগুলির সাথে দ্বিমুখী যোগাযোগের জন্য:
নামযুক্ত পাইপগুলি প্রয়োগ করা বেশ সহজ।
উদাহরণস্বরূপ, আমি সি তে নামকৃত পাইপ সহ একটি প্রকল্প বাস্তবায়ন করেছি, স্ট্যান্ডার্ড ফাইল ইনপুট-আউটপুট ভিত্তিক যোগাযোগের জন্য ধন্যবাদ (ফোপেন, এফপ্রিন্টফ, fscanf ...) এটি এত সহজ এবং পরিষ্কার ছিল (যদি এটি বিবেচনা করেও থাকে)।
এমনকি আমি তাদের জাভা দিয়ে কোড করেছিলাম (আমি তাদের উপর সিরিয়াল তৈরি করছিলাম এবং প্রেরণ করছিলাম!)
নামী পাইপগুলির একটি অসুবিধা রয়েছে:
সকেটগুলির সাথে একটি সমস্যা হ'ল তাদের কাছে বাফারটি ফ্লাশ করার কোনও উপায় নেই। নাগলে অ্যালগরিদম নামে কিছু আছে যা সমস্ত ডেটা সংগ্রহ করে এবং 40 মিমি পরে এটি ফ্লাশ করে। সুতরাং যদি এটি প্রতিক্রিয়াশীল হয় এবং ব্যান্ডউইথ না হয় তবে আপনি পাইপ দিয়ে ভাল হতে পারেন।
আপনি নাগলেকে সকেট অপশন টিসিপি_নোডিলে দিয়ে অক্ষম করতে পারেন তবে তারপরে পড়া শেষ হবে না কোনও একক পঠন কলে দুটি সংক্ষিপ্ত বার্তা receive
সুতরাং এটি পরীক্ষা করুন, আমি এর কোনওটিই শেষ করে নিই এবং প্রচুর কার্নাল সিস্টেম কলগুলি এড়িয়ে মেমরি ম্যাপযুক্ত ভিত্তিক সারিগুলিকে মেশিনে পাইথ্রেড মুটেক্স এবং সেমফোর প্রয়োগ করেছি (তবে আজ তারা আর খুব ধীর নয়)।
নামযুক্ত পাইপ এবং সকেটগুলি কার্যত সমতুল্য নয়; সকেট আরও বৈশিষ্ট্য সরবরাহ করে (তারা একটি দিকনির্দেশক, প্রথমদিকে)।
কোনটি আরও ভাল পারফরম্যান্স করবে তা আমরা আপনাকে বলতে পারি না, তবে আমি দৃ strongly়ভাবে সন্দেহ করি এটির কোনও গুরুত্ব নেই।
ইউনিক্স ডোমেন সকেটগুলি টিসিপি সকেটগুলি কী করবে তা কেবলমাত্র করবে তবে কেবল স্থানীয় মেশিনে এবং (সম্ভবত কিছুটা) নিম্ন ওভারহেড সহ।
যদি কোনও ইউনিক্স সকেট পর্যাপ্ত দ্রুত না হয় এবং আপনি প্রচুর ডেটা স্থানান্তর করে থাকেন তবে আপনার ক্লায়েন্ট এবং সার্ভারের মধ্যে ভাগ করা মেমরি ব্যবহার করার বিষয়টি বিবেচনা করুন (এটি সেট আপ করার জন্য অনেক বেশি জটিল)।
ইউনিক্স এবং এনটি দুজনেরই "নামযুক্ত পাইপ" রয়েছে তবে তারা বৈশিষ্ট্য সংস্থায় সম্পূর্ণ আলাদা।
আপনি জিরো কিউ [ zmq / 0mq ] এর মতো হালকা ওজনের সমাধান ব্যবহার করতে পারেন । সকেটগুলি এটি ব্যবহার করা খুব সহজ এবং নাটকীয়ভাবে দ্রুত।
nanomsg
। যাইহোক, স্বাগতম এবং এই দুর্দান্ত জায়গা উপভোগ করুন এবং এটি সক্রিয়ভাবে অবদানকারী সদস্য হয়ে উঠুন।
pipe(2)
(এরmkfifo(3)
,?) বিজয়ী হতে পারে তবে আপনি চেষ্টা না করা পর্যন্ত জানেন না।