আমার স্টার্ট আপটি দ্রুত করার জন্য আমি কী করতে পারি?


41

শুরুর সময়টি হ্রাস করার জন্য আমি কিছু প্রাথমিক জিনিসগুলি কী করতে পারি?

এই বিষয়ে বিশেষভাবে আমার কিছু মনোযোগ দেওয়া উচিত?

দ্রষ্টব্য: কম সময়ে (সেশন প্রতি একবার) ইম্যাক্স শুরু করে এবং চলমান পরিস্থিতিতে ফাইলগুলি খোলার মাধ্যমে সূচনার সময় হ্রাস করা যায় । এই প্রশ্নটি প্রারম্ভকালীন সময়টি হ্রাস করার বিষয়ে, সেশন শুরু করার জন্য বা অন্য কোনও সময় ইমাস শুরু করার সময় প্রয়োজনীয়।


50 এবং 30 -রও বেশি কিছু "প্রিয়" বুকমার্কের প্রশ্ন ও উত্তর স্কোর সহ স্ট্যাক ওভারফ্লোতে একই প্রশ্নের উত্তরও দেখুন । এখানে ভাল উত্তর স্ট্যাক ওভারফ্লোতে যা পাওয়া যায় তার বাইরে চলে যাওয়া উচিত।


1
আমি এই সম্পর্কে তথ্য রাখতে চাই, তবে আমার অনুমান যে বেশিরভাগ ব্যবহারকারীর জন্য একটি বা দুটি প্যাকেজ রয়েছে যা প্রারম্ভকালে বেশিরভাগ অংশের জন্য তৈরি করে। আমার ক্ষেত্রে এটি হেলম ছিল। মনে রাখবেন যে আপনি যদি হেলম ব্যবহার করেন আপনি সত্যিই এর সূচনাটি স্থগিত করতে পারবেন না, আপনি এখনই এটি ব্যবহারের জন্য প্রস্তুত রাখতে চান। আমি আইভিতে স্যুইচ করেছি এবং এটি আমার শুরুর সময়টিকে প্রায় 12 সেকেন্ড থেকে এক সেকেন্ডেরও কম এনেছে। এমনকি আমি সার্ভার / ক্লায়েন্ট সেটআপ ব্যবহার বন্ধ করে দিয়েছি। (যাইহোক, আমি প্রারম্ভকালীন সময় হ্রাস করতে স্যুইচ করি নি, এটি ছিল একটি দুর্দান্ত দিক উপকার।)
ওমর

উত্তর:


43

হ্রাস করার বিষয়ে আমার পয়েন্টগুলি এখানে emacs-init-time, এটি কোনও ডেমন বা সার্ভার ব্যবহার করার মতো বিষয়গুলিকে notেকে রাখে না, এটি এমনটি না বলে চলে যে আপনার খুব কমই ইমাস বন্ধ করা উচিত।

না:

  • আপনার initে প্যাকেজগুলির প্রয়োজন হবে না, যদি প্যাকেজের সঠিক অটোলোড কুকি না থাকে তবে নিশ্চিত হয়ে নিন যে আপনি প্রবেশের আদেশে অটোলোড সেটআপ করেছেন। সুতরাং আপনি যদি প্রথমবার প্যাকেজটি ব্যবহার করেন তবে foobarকল করে foobar-modeএবং foobarপ্রাক-অটোলায়েড না এলে আপনার এর মতো কিছু দরকার হবে:

    (autoload 'foobar-mode "foobar")
    

    প্যাকেজটি এখনও লোড না হয়ে foobar-modeগেলেও এটি আপনাকে কল করার অনুমতি দেবে foobarfoobarআপনি প্রকৃতপক্ষে কল না করা পর্যন্ত এই উপায়টি লোড হবে নাfoobar-mode

  • package-refresh-contentsপ্রারম্ভকালে প্যাকেজ ইনস্টল করার প্রয়োজন না হলে চালাবেন না। আপনি যদি অনুপস্থিত প্যাকেজগুলি স্বয়ংক্রিয়ভাবে ইনস্টল করার উদ্যোগ নিয়ে থাকেন তবে অটো ইনস্টলিং কখন হওয়া উচিত তা নির্দিষ্ট করার জন্য একটি কমান্ড লাইন আরগ স্থাপন বিবেচনা করুন।

  • উপরের মত, নেটওয়ার্ক সম্পর্কিত কোনও কাজ করবেন না।
  • desktopআপনি সত্যিই চাই না করা না হলে আপনার আর এনটি লোড করবেন না ।

ডু

  • use-packageআপনার প্যাকেজগুলি পরিচালনা করার মতো কিছু ব্যবহার করুন । এটি কী প্রয়োজন হবে তা নির্দিষ্ট করে দেওয়া, পরে কী লোড করা যায়, কোনটি অটোল্যাড করে এবং প্যাকেজের ভিত্তিতে আপনার প্যাকেজে কীভাবে আপনার ইনফিকেটিং প্রোফাইল করে তোলে তা সহজ করে তোলে।

  • কোনও থিম লোড করা এবং এটি সক্ষম করার মধ্যে পার্থক্যটি জানুন। সংক্ষেপে, আপনি যতগুলি চান লোড করতে পারেন তবে নিশ্চিত করুন যে আপনি একের বেশি সক্ষম করছেন না। আদর্শভাবে, শুধুমাত্র একটি থিম লোড করুন এবং সক্ষম করুন। load-themeথিমটি সক্ষম করা রোধ করতে একটি alচ্ছিক আরগের প্রয়োজন। দুর্ঘটনাক্রমে একাধিক থিম সক্ষম করা সহজ হতে পারে যা প্রারম্ভকালে ধীর এবং কুশ্রী।

  • প্রতারণা করুন: প্রায়শই বৃহত বৈশ্বিক মোডগুলি থাকে যা আপনি আর ডি-তে লোড করতে চাইবেন, প্রাক-গাছ, স্ব-সম্পূর্ণ, আইডো-মোড ইত্যাদির মতো জিনিস ure । আমি এই ইচ্ছা পালন undo-tree-mode, idoএবং কারণ সময় আমি আসলে তাদের ব্যবহার করার জন্য প্রয়োজন দ্বারা, তারা ইতিমধ্যেই লোড করা হয় অন্যদের এবং কখনও বিলম্ব লক্ষ্য।

    আপডেট: ব্যবহার-প্যাকেজটি কিছুটা পরিবর্তিত হয়েছে, আপনি টাইমার বৈশিষ্ট্যগুলি ব্যবহার শুরু করার আগে অফিসিয়াল রিডমিটি পড়ুন।

    উদাহরণস্বরূপ: আপনি যদি কিছুটা বিলম্ব করতে চেয়েছিলেন তবে global-undo-tree-modeআপনার ভারটি এটিকে আপনার ডিজে রাখতে পারেন:

    (run-with-idle-timer 1 nil (lambda () (global-undo-tree-mode t)))
    

    এখন আপনার উদ্যোগটি আনন্দের সাথে চালিয়ে global-undo-tree-modeযেতে পারে এবং যতক্ষণ না বাকি সমস্ত কিছু প্রস্তুত হওয়ার পরে এবং আপনি চাকার পিছনে রয়েছেন ততক্ষণ পর্যন্ত আসলে সক্রিয় হয় না।

    use-packageনিষ্ক্রিয় কীওয়ার্ড ব্যবহার করে নির্মিত এই ধরণের আচরণের সমর্থন রয়েছে। undo-treeআমার .init.el এর কনফিগারেশনটি এখানে :

    (use-package undo-tree
      :idle (global-undo-tree-mode 1)
      :bind (("C-c j" . undo-tree-undo)
             ("C-c k" . undo-tree-redo)
             ("C-c l" . undo-tree-switch-branch)
             ("C-c ;" . undo-tree-visualize))
      :ensure t)
    
  • আপনার থিমটিকে প্রোফাইল করুন, আসল ধীরগতি কোথায় তা দেখে সর্বদা অবাক হয়ে যাওয়া। প্রোফাইল-ডোটেম্যাকস.এল একটি অবিশ্বাস্য সরঞ্জাম যা আমি আমার দীক্ষাটি seconds 6 সেকেন্ড থেকে <1 সেকেন্ডে নামিয়ে আনতে সহায়তা করেছিলাম।

একটি ভাল কনফিগার করা use-packageinit অবিশ্বাস্যরকম দ্রুত হতে পারে। আমি আমার init বাইট-সংকলন করি না এবং এটি use-package95 টি প্যাকেজ কনফিগার করতে ব্যবহার করে এবং <1 সেকেন্ডে শুরু হয়।


7
"আপনার টিআইএন-কে প্রোফাইল করুন, আসল ধীরগতি কোথায় তা দেখে সর্বদা অবাক হয়ে যায়" " স্পোলার সতর্কতা, এটি (require 'org)লাইন। :-)
মালাবরবা

@ জর্দান, আপনি কীভাবে এন্ট্রি ফাংশনগুলিতে অটলোডগুলি সেটআপ নিশ্চিত করে তারপরে প্যাকেজগুলি লোড করার জন্য আপনার ডিআই-তে নিষ্ক্রিয় টাইমারগুলি শুরু করবেন, বিশেষত পূর্ববর্তী গাছ-মোডের জন্য দয়া করে কিছুটা বাড়িয়ে দিতে পারেন? ধন্যবাদ।
ফ্রান্সিসকো দিবার

@ ফ্রেঞ্চিসকোডিবার আমি উদাহরণ সহ আমার পোস্ট আপডেট করেছি।
জর্ডন বিওনডো

2
আমি তাত্ক্ষণিকভাবে ইডো-মোডটি ব্যবহার করি, সিমেক্সের জন্য সিএক্স সিএফ বা এমএক্স হ'ল আমি যখন সর্বদা ইমাস খুলি তখন আমি সর্বদা প্রথম জিনিস এবং আমি কখনই কোনও সমস্যা লক্ষ্য করিনি। এছাড়াও আপনি যদি ইমাস খোলার এক সেকেন্ডের মধ্যে কিছু পূর্বাবস্থায় ফিরিয়ে আনতে চান ... তবে আমার এ সম্পর্কে কিছু বলার নেই। যদি আপনি সত্যিই উদ্বিগ্ন হন তবে এটি নিজে চেষ্টা করে দেখুন, বা কেবল একটি অ-নিষ্ক্রিয় টাইমার বা ইন ডি হুকের পরে ব্যবহার করুন।
জর্ডন বিয়নদো

1
নিষ্ক্রিয় টাইমার পরামর্শ কার্যকর। সামান্য খাটো লোডিং সিনট্যাক্স হ'ল (run-with-idle-timer 1 nil #'global-undo-tree-mode)'. If the function you are loading takes parameters you can just provide them after the '' `কমান্ড।
অ্যান্ড্রু সোয়ান

8

ইমাস reddit- এ সম্প্রতি পপ আপযুক্ত এমন কিছু : আপনার থ্রিজি ফাইলটির শুরুতে এটি ফেলে রেখে আবর্জনা সংগ্রহের অনুরোধের সংখ্যা হ্রাস করুন:

(setq gc-cons-threshold 50000000)

(add-hook 'emacs-startup-hook 'my/set-gc-threshold)
(defun my/set-gc-threshold ()
  "Reset `gc-cons-threshold' to its default value."
  (setq gc-cons-threshold 800000))

উপরের উদাহরণে, জিসি প্রতি ~ 50MB (~ 800kb এর ডিফল্ট পরিবর্তে) ডাকা হয়, যা প্রচুর র‍্যাম সহ একটি আধুনিক সিস্টেমে সংবেদনশীল বলে মনে হয়।


1
মান ব্যতীত (ক) সম্ভবত আপনার প্রয়োজনের তুলনায় অনেক বেশি (আমি তার দশমাংশের সাথে কোনও পার্থক্য দেখছি না); এবং (খ) স্পষ্টত কোনও মান আপনি প্রারম্ভের বাইরেও ধরে রাখতে চান না, কারণ যখনই জিসি হয় তখন একটি বৃহত জিসি প্রান্তিক দীর্ঘ বিলম্বের সমান হয়। আপনি এটি আরম্ভের জন্য উচ্চ স্থিত করে রাখলে, আরম্ভের পরে আবার নীচে সেট করুন। আমি মনে করি এটি করার জন্য emacs-startup-hookএটি একটি ভাল জায়গা।
ফিল্ডস

1
@ ফিলস ধন্যবাদ! (ক) আমার সেটআপে, 50 এমবি ন্যূনতম সংখ্যক জিসি (এবং সর্বনিম্ন শুরুর সময়) দেয়। যদি আমি 10 এমবি হিসাবে কম যাই তবে পার্থক্যটি লক্ষণীয় / পরিমাপযোগ্য (যদিও এটি বাস্তবে খুব বেশি পরিবর্তন হয় না ...) (খ) ভাল ধারণা, ধন্যবাদ। আমি আপনার মন্তব্য প্রতিফলিত করতে পোস্ট সম্পাদনা।
ffevotte

6

আপনার প্রারম্ভকালের সময়টি অনুকূলকরণের জন্য ব্যয় করা সময় সম্ভবত ইমাস শুরু হওয়ার অপেক্ষায় থাকা সমস্ত অতিরিক্ত সময়ের চেয়ে বেশি।

এই মুহুর্তে আমি requireআমার init ফাইলে 25 টি কল করি যাতে ফ্লাইচেক আমার কোডটিতে বানান ত্রুটি খুঁজে পেতে পারে। আমার শুরুর সময়টি ...

$ time emacs --eval '(save-buffers-kill-terminal)'

real    0m2.776s
user    0m2.305s
sys     0m0.148s

এছাড়াও, আমার সিস্টেমে time emacs -Q --eval '(save-buffers-kill-terminal)'একটি realরয়েছে 0m0.404s। আমি যে তাত্ত্বিক সর্বোচ্চ সময় সঞ্চয় করতে পারি তা হ'ল ২.৩ সেকেন্ড।

বলুন যে আমি আমার ডিআইডি ফাইলে অপ্টিমাইজেশনের সমস্ত বিষয় তৈরি করতে এক ঘন্টা ব্যয় করেছি। (আমার সূচনা ফাইলটি বাইট-কম্পাইল করার কারণে কেন আমার পরিবর্তনগুলি কার্যকর হচ্ছে না তা জানার চেষ্টা করে পরবর্তী তারিখে ব্যয় করা অতিরিক্ত 15-30 মিনিট আমি গণনা করব না।) (আমিও সময়টি গণনা করব না আমি requireকলগুলি সরিয়ে না ফেললে ফ্লাইচেক আমাকে ডিবাগারে সংরক্ষণ করতে পারত )) এক ঘন্টার মধ্যে ৩00০০ সেকেন্ড রয়েছে, তাই যদি আমি পুরো ২.৩ সেকেন্ডটি সংরক্ষণ করতে পারি তবে সময়মতো আমার বিনিয়োগটি কেবল 1565 স্টার্টআপগুলির পরে পরিশোধ করতে হবে।

আমি ধরে নিয়েছি যে আমি প্রতিদিন 3 বার ইম্যাক্স পুনরায় চালু করেছি, এই বিনিয়োগটি পরিশোধ করতে দেড় বছর সময় লাগবে। যদি আমি একই ইম্যাক্স উদাহরণটি একসাথে কয়েক দিনের জন্য চলতে থাকি (যেমন আমি প্রায়শই করি) তবে আমি সম্ভবত সপ্তাহে 2-5 বার পুনরায় চালু করতে পারি, সেই ক্ষেত্রে সেই বিনিয়োগটি পরিশোধ করতে 6 থেকে 15 বছর সময় লাগবে।

আমি উদার হচ্ছি, কারণ আপনি সম্ভবত আপনার স্টার্টআপটি অনুকূলকরণের জন্য এক ঘণ্টার বেশি সময় ব্যয় করতে পারবেন এবং আপনি সম্ভবত সেকেন্ডের সর্বোচ্চ তাত্ত্বিক সংখ্যাটি সংরক্ষণ করতে পারবেন না।


12
তবে আপনি সম্ভবত সুখী হবেন।
ফিল্ডস

2
এটি কোনও ব্যক্তির ক্ষেত্রে সত্য হতে পারে তবে স্ট্যাক এক্সচেঞ্জের পুরো বিষয়টি ভাগ করে নেওয়া। এমন কৌশল সম্পর্কে কী বলা যায় যা এক ব্যক্তির সন্ধান করতে 30 মিনিট সময় নেয় তবে কয়েক ডজন লোকের প্রারম্ভকালীন সময়ে 1 সেকেন্ড শেভ করে? আপনি কি এখনও এটি একটি খারাপ বিনিয়োগ বিবেচনা করবেন?
ffevotte

বিস্ময়করভাবে @ ফিলস, আমি একই কথা বলা বিবেচনা করেছি, তবে আমার নিজের দৃষ্টিভঙ্গির সমর্থনে! "আপনি আপনার প্রারম্ভিক সময়টি সম্পর্কে কাতর হওয়ার আগে নিজেকে ভাবুন, 'আমি আনন্দিত যে আমি এটির অনুকূলিতকরণে সময় নষ্ট করি নি!'"
জ্যাকসন

@ ফ্রান্সেসকো এবং এই পোস্টটি আমার কৌশলটি যা কয়েক ডজন লোককে সময় বাঁচায়।
জ্যাকসন

@ জ্যাকসন এখনও আমি এই নির্দিষ্ট বিষয়ে আপনার সাথে একমত নই, তবে কমপক্ষে এখন আমি আপনার বক্তব্যটি দেখতে পাচ্ছি। ধন্যবাদ :)
ffevotte
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.