রুবি ঘুম নাকি এক সেকেন্ডের চেয়ে কম দেরি?


149

আমি রুবি দিয়ে একটি স্ক্রিপ্ট তৈরি করছি যা অবশ্যই প্রতি সেকেন্ডে 24 ফ্রেমে ফ্রেম সরবরাহ করতে হবে, তবে কমান্ডগুলি প্রেরণের মধ্যে আমার দ্বিতীয় সেকেন্ডের 1/24 তম অপেক্ষা করতে হবে। এক সেকেন্ডের চেয়ে কম ঘুমানোর সেরা উপায় কী?

উত্তর:


202
sleep(1.0/24.0)

আপনার ফলোআপ প্রশ্নটি যদি এটি সর্বোত্তম উপায়: না, আপনি খুব মসৃণ ফ্রেমরেট পেতে পারেন কারণ প্রতিটি ফ্রেমের রেন্ডারিং একই পরিমাণে সময় নিতে পারে না।

আপনি এই সমাধানগুলির মধ্যে একটি চেষ্টা করতে পারেন:

  • একটি টাইমার ব্যবহার করুন যা অঙ্কন কোডের সাথে সেকেন্ডে 24 বার গুলি চালায়।
  • যথাসম্ভব অনেকগুলি ফ্রেম তৈরি করুন, সময় অনুযায়ী ফ্রেম তৈরি করুন, গতি তৈরি করুন frame

14
@ ফানকোডব্যাট আমি নিশ্চিত যে প্রতিটি বেসিক রুবি রানটাইম আপনার জন্য এটি করে।
জর্জি স্কলি

2
@ জোসেফসিলভাশি: রুবি দোভাষী সম্পর্কে আমার কোনও অন্তর্দৃষ্টি নেই, তবে রুবি এম্রি ডিফল্টভাবে স্মৃতিচারণ করে না। তবে আমি আশা করি উত্স কোডকে বাইট কোডে রূপান্তর করার সময় এটি এই জাতীয় অপটিমাইজেশন করে।
জর্জি শ্লেলি

8
DRY নীতিটির জন্য 1.0 / 24.0 মানটি ভেরিয়েবলের থেকে বের করা ভাল ধারণা। কোডের অন্যান্য টুকরাগুলিরও সেই মানটির প্রয়োজন হবে, তাই সদৃশতা এড়াতে আপনার এটি কোনও কেন্দ্রীয় স্থানে রাখা উচিত। পারফরম্যান্স যদি পার্শ্ব-প্রতিক্রিয়া হয়, তবে দুর্দান্ত!
জেমস ওয়াটকিন্স

1
আপনার অবশ্যই অবশ্যই ধ্রুবকটি বের করা উচিত, এবং অবশ্যই "আপনি যে সমস্ত পারফরম্যান্স পেতে পারেন" কারণটি দিয়ে তা করবেন না
ব্লেক

4
তবে এটি একটি তাত্ক্ষণিক বিভাগ, ফ্রেম প্রতি একবার চালানো। আশাকরি ফ্রেমের রেন্ডারিং নিজেই গণনার জটিলতায় অনেক বেশি মাত্রা। এটি অকাল অপটিমাইজেশনের একটি উজ্জ্বল উদাহরণ।
অ্যালান এইচ।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.