ইউনিট পরীক্ষার জন্য সর্বনিম্ন ইমাস 25 তৈরি করুন


10

আমার ইমাস লিসপ প্যাকেজটি ইউনিট-পরীক্ষার জন্য আমি ইমা্যাকস ট্রাঙ্কের খুব ন্যূনতম রূপটি তৈরি করতে চাই। বিল্ডটির কোনও জিইআইআই, কোনও চিত্র সমর্থন, ইত্যাদির দরকার নেই এটি মূল ইমাক লিস্প লাইব্রেরিগুলির সাথে কেবলমাত্র একটি ন্যূনতম ইমাস লিস্প ইন্টারপ্রেটার হওয়া উচিত এবং এটি পাঁচ মিনিটেরও কম সময়ে আদর্শভাবে দ্রুত তৈরি করা উচিত ।

বর্তমানে, আমি পার করছি --with-x-toolkit=no --without-x --without-allকরার ./configure। এটি সমাপ্ত হওয়ার পরে, এটি আমাকে বলেছে যে সমস্ত ইমাস বৈশিষ্ট্য অক্ষম রয়েছে, তবে দুর্ভাগ্যক্রমে বিল্ডটি এখনও প্রায় দশ মিনিট সময় নেয় ।

আমি বুঝি যে এটি দ্রুত গিয়ে Emacs বিল্ড পেতে অসম্ভব হতে পারে, কিন্তু কি করে আমাকে অবাক করে সাথে আছেন খুব একই পতাকা গিয়ে Emacs 24.5 প্রায় মধ্যে তৈরী করে দুই মিনিট

এই স্থূল পার্থক্যের কারণ কী, এবং আমি ইমাসস ট্রাঙ্কটি ইমাক্স 24.5 এর মতো দ্রুত তৈরি করতে পারি?

এবং, সম্পর্কিত প্রশ্নে, আমি কীভাবে চুপচাপ বিল্ডিংয়ের জন্য ইম্যাক্স পাব? বর্তমানে আমার ইউনিট পরীক্ষার আউটপুটগুলির প্রায় 80% ইমাস বিল্ডিং। আদর্শভাবে, আমি make installকোনও আউটপুট মুদ্রণ করতে চাই না ।


আপনি কি কোনও ধরণের সিআই প্ল্যাটফর্মে এটি করার পরিকল্পনা করছেন? না হলে আপনি কোন ধরণের কম্পিউটার ব্যবহার করছেন? স্পষ্টতই বিল্ড স্পিডটি আপনার প্রসেসরের উপর খুব নির্ভরশীল হতে চলেছে, তবে আমার জন্য ./configure --with... && make -j (number of cores * 1.5)30 সেকেন্ডের মধ্যে শেষ হবে। আপনি যদি কোনও স্থানীয় মেশিনে চালাচ্ছেন তবে তৈরি করার জন্য -j আর্গুমেন্টটি ব্যবহার নিশ্চিত করুন। আপনার কি করার কোনও ভাল কারণ আছে make install? এটি যদি আপনি কেবল এসসিআর ডিরেক্টরি থেকে ইম্যাক চালান তবে আপনি এড়াতে পারেন এমন কিছু সময় যোগ করবে।
জর্ডন বিওনডো

এটি ট্র্যাভিস সিআই, কিন্তু আমি কেন দেখছি না কেন এটি গুরুত্বপূর্ণ? এটি একই মেশিনে দুটি পৃথক ইমাক সংস্করণের মধ্যে আমার সম্পূর্ণ পার্থক্য যা আমি ব্যাখ্যা করতে চাই। IOW কেন একই সিস্টেমে তৈরি করতে পাঁচগুণ বেশি ট্রাঙ্ক ?
চন্দ্রালগ্ন

একটি সংগ্রহস্থল থেকে বিল্ডিংয়ের জন্য নির্দিষ্ট ফাইল তৈরি করা দরকার যা বিতরণ করা টার্বলগুলিতে ইতিমধ্যে উপস্থিত রয়েছে।
রাজনীতি

@ পলিটজা কি ফাইল? আমি জানি যে উত্পাদন করতে আমার দৌড়াতে ./autogen.shহবে configure, তবে এটি কয়েক সেকেন্ডের নয়, মিনিট নয়।
চন্দ্রালগ্ন

2
@ লুনারিওম আপনার এখানে তিনটি পৃথক প্রশ্ন রয়েছে। 1: কিভাবে ইমাসকে দ্রুত বানাতে হয়, 2: ইমাস 25 টি ইমাস 24.5 এবং 3 এর চেয়ে ধীর গতিতে কেন: কীভাবে make installনিঃশব্দে রান চালায়। সুতরাং দয়া করে এগুলিকে 3 টি প্রশ্নে বিভক্ত করুন যাতে সেগুলি পৃথকভাবে ট্র্যাক করা যায় এবং একটি প্রশ্নের সাথে লেগে থাকার জন্য এটি অনুসারে সম্পাদনা করতে পারে।
রক্কি

উত্তর:


8

24.5 আপনার জন্য এত তাড়াতাড়ি তৈরি করার কারণটি হ'ল .elcফাইলগুলি আসলে টারবলগুলিতে বিতরণ করা হয়, মেক-ডিস দেখুন । গিট থেকে বিল্ডিংয়ের সময়, বেশিরভাগ সময় ব্যয় .elকরা হয় ফাইলগুলিতে সংকলন করতে .elc। সি কোডটি অনুকূলিত করে, লিস্প সংকলনটি দ্রুত যেতে পারে তবে এটি এখনও অনেক সময় নেয়। আপনার মূল সেটিংস (vs 14 বনাম ~ 1 মিনিট) ব্যবহার করে বিল্ডেরCFLAGS='-O2 -march=native' সাথে বিল্ডের (~ 9 বনাম ~ 1.5 মিনিট) ব্যবহার করে তুলনা করুন ।

এছাড়াও, গিট থেকে ক্লোনিং করতে প্রায় এক মিনিট সময় লাগে, যখন টারবাল ডাউনলোড এবং আনপ্যাক করা প্রায় 5 সেকেন্ড সময় নেয়। গিথুব থেকে গিট সংরক্ষণাগারটি ডাউনলোড করার সময় সংস্করণগুলির মধ্যে বিল্ড টাইমগুলির তুলনা করুন (যথাক্রমে 24 5, ~ 6, v24.5 এর জন্য 8 মিনিট, মাস্টার এবং ইমাসস -২,, যথাক্রমে) আপনি দেখতে পাচ্ছেন, ডিস্ট্রিবিউশন টার্বল ব্যবহার না করার সময়, সমস্ত বিল্ড টাইমগুলি কমপক্ষে একই আকারের আকার হয় (

এবং, সম্পর্কিত প্রশ্নে, আমি কীভাবে চুপচাপ বিল্ডিংয়ের জন্য ইম্যাক্স পাব? বর্তমানে আমার ইউনিট পরীক্ষার আউটপুটগুলির প্রায় 80% ইমাস বিল্ডিং। আদর্শভাবে, আমি make installকোনও আউটপুট মুদ্রণ করতে চাই না ।

আপনি সর্বদা আউটপুট এ পুনর্নির্দেশ করতে পারেন /dev/null। আমার পরীক্ষাগুলির জন্য আমি make installআউটপুটটি grep -E '^(make|[A-Z])'কাটাতে আউটপুটটি পাইপ করলাম (ট্র্যাভিস সিআই জাভাস্ক্রিপ্ট যা ওয়েবে লগকে ফর্ম্যাট করে পুরো আউটপুট নিয়ে সমস্যা হচ্ছিল)।

আমি ইমাক্স ট্রাঙ্কটি ইমাক্স 24.5 এর মতো দ্রুত তৈরি করতে পারি?

না (বা হ্যাঁ এই অর্থে যে আপনি Emacs 24.5 বিল্ড করতে পেতে (প্রায়) ইমাস ট্রাঙ্কের মতো ধীরে: পি) পেতে পারেন)। তবে আপনি যা করতে পারেন তা হল ইমাস বিল্ড সংরক্ষণ করুন এবং ইউনিট-পরীক্ষার জন্য কেবল সেই ক্যাশেড ফলাফলটি ডাউনলোড করুন। আমি এটি আমার ইমাসস-ট্র্যাভিস ফর্কটির আপলোড শাখায় প্রয়োগ করেছি, এখানে ইয়াসনিপেটের ব্যবহারের একটি উদাহরণ রয়েছে : ইমাস ইনস্টল করার সময়টি 2.5 ডলার


3

এখানে বিভিন্ন পরামর্শ দেওয়া হয়।

  1. কোনও এলসি ফাইল নেই।

নীচে বর্ণিত হিসাবে, সমস্ত লিস্প ফাইলগুলি কমপাইল করে কমপক্ষে 10% সময় থাকে। এটি অক্ষম করার একটি উপায় হ'ল ফাইলটিতে লোডডিফ লক্ষ্যগুলি সম্পাদনা করা lisp/Makefileএবং এতে পরিবর্তন করা:

    $(lisp)/loaddefs.el: $(LOADDEFS)
          true
  1. কোনও সংকলক অপ্টিমাইজেশন বা ডিবাগার প্রতীক টেবিল নেই

বর্তমানে, আমি - উইথ-এক্স-টুলকিট = না - উইথআউট-এক্স - উইথআউট-অল টু। / কনফিগার দিয়ে চলেছি।

আমি সি সংকলন সময় 1/4 সময় (একটু থেকে মিনিটেরও 16 সেকেন্ড কম) মধ্যে কমাতে সক্ষম হন src মাত্র ডিফল্ট কম্পাইল পতাকা পরিবর্তন। ডিফল্ট CFLAGS আমার কাছে তা থাকত পেয়েছিলাম হয়েছে: -g -O3

পরিবর্তে ব্যবহার করুন CFLAGS=''

  1. চালাবেন না make install, তবে কেবল এসআরসি ডিরেক্টরিতে অন্তর্নির্মিত ইমাকগুলি চালান ।

যেমনটি বলা হয়েছে যে আরও 10% সময় ডক্স তৈরির ক্ষেত্রে। যদিও আমি এটি সময় নিই নি, সন্দেহ নেই যে ফাইলগুলি অনুলিপি করা এবং এলিস্প ফাইলগুলিকে সংকুচিত করতে অনেক সময় আছে make install। তাই না। আপনি যদি টাইমিং চার্টগুলি আবার করতে চান তবে চালান remake --profile

উপরের পর্যবেক্ষণগুলি নীচে ভিত্তি করে ....


প্রথম পদক্ষেপটি কীভাবে এটি হ্রাস করতে হবে তা নির্ধারণের জন্য সময়টি কোথায় ব্যয় করা হয় তা বোঝা। ভাগ্যক্রমে ইমাক্সের মতো কোনও কিছুর জন্য, আমি আপনাকে খুঁজে বের করতে সহায়তা করার জন্য একটি সরঞ্জাম সম্প্রতি লিখেছি (বা বরং প্রসারিত) করেছি। আমি পুনর্নির্মাণের একটি --profileবিকল্প যুক্ত করেছি (জিএনইউ তৈরির একটি কাঁটাচামচ) যা আপনাকে নির্দিষ্ট লক্ষ্যগুলিতে কতটা সময় ব্যয় করবে তা বলে দেবে।

আমি একটি সাম্প্রতিক স্ন্যাপশট তৈরি করার চেষ্টা করেছি এবং হ্যাঁ এটি প্রায় 10 মিনিট সময় নেয়। আপনি যদি রিমেক ইনস্টল না করে থাকেন তবে আমার রান সম্পর্কে আপনি যে প্রোফাইলিং তথ্য ব্যবহার করতে পারেন তার একটি সংক্ষিপ্ত বিবরণ আমার কাছে রয়েছে। আমি তথ্যটি প্রদর্শনের জন্য কেচেগ্রাইন্ড ব্যবহার করি তবে ভিজ্যুয়ালাইজেশন সরঞ্জামগুলির জন্য সেখানে অন্যান্য সরঞ্জাম থাকতে পারে। গিস্টটিতে একটি পিএনজি রয়েছে যা রানের স্ক্রিনশট।

এখন বিস্তারিত ...

আমার দৌড়ে, প্রায় 20% সময় লিসপ এবং তথ্য ফাইলগুলি তৈরিতে ব্যয় করা হয় যা আপনার সত্যিই করার দরকার নেই। প্রকৃতপক্ষে তথ্য ফাইলগুলির চেয়ে লিস্প ফাইলগুলিতে আরও কিছুটা ব্যয় করা হয়। আপনি সম্ভবত এড়াতে Makefile পরিবর্তন করতে পারেন।

ইমাস 24 এর সাথে তুলনা করা আকর্ষণীয় হতে পারে My

যদি আগ্রহ থাকে (যা আপনি আপভোট দিয়ে দেখিয়ে দিতে পারেন), আমি মেকফাইলে নির্দিষ্ট হ্যাকগুলির পরামর্শ দেব। তবে কারও কাছ থেকে কাজ করার জন্য অনুপ্রাণিত হওয়া নিজের পক্ষে এটি পর্যাপ্ত হওয়া উচিত।


"20% সময় লিস্প তৈরিতে ব্যয় করা হয়" - আমি @ লুনারিওরনের ইমাসস - ট্র্যাভিস রেপো ক্লোন করে দেখেছি মনে হচ্ছে ইমাসmake lisp 25 এর জন্য প্রায় 60% সময় নিচ্ছে: ট্র্যাভিস-ci.org/npostavs/emacs-travis/builds/91107858 । এবং এর একটি বিরাট অংশ make srcলিস্প সংকলন করছে, সুতরাং আমি কীভাবে এই পরিমাপের পুনর্মিলন করব তা অবাক করি। ইমাস 24 এ দেখে মনে হচ্ছে এটি কেবল cc-*.elফাইলগুলি সংকলন করার সময় হয় make lisp, এটি কোনও বাগ?
npostavs

এছাড়াও, এটি অপটিক্যাল মায়া হতে পারে, তবে এটি আমার কাছে দেখায় যে আপনার প্রোফাইলিং চিত্রটি প্রায় 50% পর্যন্ত জুড়েছে।
npostavs

@ এনপোস্টাভস কেবলমাত্র লক্ষ্যর সময়টি পুনরায় তৈরি করে, এটি নিজেই অন্তর্ভুক্ত করে না। এটি সম্ভব এবং সম্ভবত যে লিস্পের অধীনে থাকা সমস্ত ফাইল এবং ডিরেক্টরিগুলির সাথে, কী পুনর্নির্মাণ করবেন তা গণনা করতে "রিমেক" / "মেক" করার জন্য যথেষ্ট সময় ব্যয় হয়। এছাড়াও, যদিও 'রিমেক' মেকিংয়ের একটি কাঁটাচামচ, তাই তারা যা করে তা একই রকম হয়, কাছাকাছি তুলনা করার জন্য আপনার পুনর্নির্মাণের প্রোফাইলের আউটপুটটির সময়কে "মেকিং" না করে "রিমেক" এর সাথে তুলনা করা উচিত And এবং একই রিমেক / সংস্করণ তৈরি করুন, শেষ অবধি, কেউ% এর সাথে কোলকুলি করতে পারে এমন কি আরও, সামগ্রিক পরামর্শগুলি আপনার ডেটা ব্যবহার করে প্রয়োগ করা হবে বলে মনে হয়
রকি

এছাড়াও, আমার পরিমাপটি ব্যবহার করছিল CFLAGS=''যা সি সংকলনটিকে দ্রুত এবং লিসপ সংকলনটিকে ধীর করে তোলে। দেখা যাচ্ছে যে, ইমাসCFLAGS='-O2 -march=native' 25 এর জন্য সামগ্রিকভাবে ব্যবহার দ্রুত, যদিও ইমাস
npostavs

@ এনপোস্টাভস আপনি লক্ষ্য করেন: সিএফএলএগএস সেট করা "সি সংকলনটিকে দ্রুত এবং লিসপ সংকলনকে ধীর করে তোলে।" তবে আপনি যদি একটি একক পরীক্ষা চালাতে যাচ্ছেন তবে সামগ্রিক সময় কিনা তা আমি নিশ্চিত নই: কিছু ধরণের-অপ্টিমাইজড সি সংকলন / বিল্ড + এলআইএসপি সংকলন + এলআইএসপি পরীক্ষার রানটি বিনা চাপিত সি কমপাইল / বিল্ড + কোনও এলআইএসপি এর চেয়ে কম হবে I সংকলন + এলআইএসপি পরীক্ষা রান।
রক্কি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.