ফোর্টরান কি দ্রুত করে তোলে?


41

ফোরট্রানের সংখ্যাগত প্রোগ্রামিংয়ে একটি বিশেষ জায়গা রয়েছে place আপনি অবশ্যই অন্যান্য ভাষায় ভাল এবং দ্রুত সফ্টওয়্যার তৈরি করতে পারেন, তবে ফোর্টরান তার বয়স সত্ত্বেও খুব ভাল পারফর্ম করে চলেছে keeps তদুপরি, ফোর্টরানে দ্রুত প্রোগ্রাম করা আরও সহজ। আমি সি ++ তে দ্রুত প্রোগ্রাম তৈরি করেছি তবে পয়েন্টার এলিয়াসিংয়ের মতো জিনিসগুলি সম্পর্কে আপনাকে আরও যত্নবান হতে হবে। সুতরাং, এর একটি কারণ থাকতে হবে এবং একটি খুব প্রযুক্তিগত one এটি কি কারণ সংকলকটি আরও অনুকূলিত করতে পারে? আমি সত্যিই প্রযুক্তিগত বিশদ জানতে চাই, সুতরাং আমি যদি অন্য কোন ভাষা ব্যবহার করি তবে আমি এই বিষয়গুলি বিবেচনায় নিতে পারি।

উদাহরণস্বরূপ, আমি জানি-বা তাই আমি মনে করি- একটি জিনিস হ'ল মানকটি নির্দিষ্ট করে যে পয়েন্টারগুলি সর্বদা স্মৃতিতে সংলগ্ন হয় যার অর্থ দ্রুত মেমরির অ্যাক্সেস means আমি বিশ্বাস করি যে আপনি এটি সংকলককে একটি পতাকা দিয়ে সি ++ এ করতে পারেন। এইভাবে এটি ফোর্টরান কী ভাল কাজ করে তা জানতে সহায়তা করে, যাতে অন্য ভাষা ব্যবহার করা হলে আমরা এটিকে অনুকরণ করতে পারি।


7
আমি বলব এটি স্ট্যাকওভারফ্লোয়ের জন্য আরও ভাল প্রশ্ন হতে পারে, যদিও আমার কাছে এটি একটি ভাল প্রশ্ন। একটি দ্রুত অনুসন্ধান ( স্ট্যাকওভারফ্লো.com/ search? q=fortran+ ব্রেকফাস্ট ) আমাকে এই প্রশ্নের দিকে নিয়ে যায় যা আপনাকে সহায়তা করতে পারে: stackoverflow.com/questions/146159/is-fortran-faster-than-c
Yann

3
আপনি কোন ধরণের ফোর্টরান ব্যবহার করছেন তা নির্দিষ্ট করতে হবে। 77 এবং 90+ এর মধ্যে যথেষ্ট পার্থক্য রয়েছে। আমি কমপক্ষে 90 ধরে নিচ্ছি যদি আমরা পয়েন্টারগুলির বিষয়ে কথা
বলি

আমি সবসময় ফোর্টরান সি এর চেয়ে দ্রুত হওয়ার বিষয়ে পড়ি ভাল, তবে এটি কি 2% এর চেয়ে দ্রুত বা 50% এর চেয়ে দ্রুততর?
shuhalo

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

উত্তর:


50

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

অ্যারে মডেল

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

ভাষার এক্সপ্লোসিটিস

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

ফোর্টরান ধীর হতে পারে

ফোর্টরান প্রতিটি কাজের জন্য দ্রুত নয় : এ কারণেই অনেক লোক এটি জিইউআই নির্মাণের জন্য বা এমনকি উচ্চতর কাঠামোগত বৈজ্ঞানিক কম্পিউটিংয়ের জন্য ব্যবহার করে না। একবার আপনি গ্রাফ, সিদ্ধান্ত গাছ এবং অন্যান্য রাজ্যের জন্য অ্যারের জগত ছেড়ে চলে গেলে এই গতির সুবিধা দ্রুত চলে যায়। কিছু উদাহরণ এবং সংখ্যার জন্য কম্পিউটার ভাষার মানদণ্ড দেখুন bench


7
ফুর্তরান ক্র্যাঞ্চিংকে "আরও সাধারণ উদ্দেশ্যে" ভাষায় মোড়কের মাধ্যমে জিইউআই / আইও সমস্যাগুলি সহজেই সমাধান করা যায়। আমি প্রায়শই এই উদ্দেশ্যে আর ব্যবহার করি।
এমবিকিউ

2
shootout.alioth.debian.org আর উপলব্ধ নেই! এবং নতুন সংস্করণে অনেক কম তথ্য রয়েছে :(
অ্যাস্ট্রোজুয়ানলু

23

ফোর্টরানের নকশা সংকলকটিকে কিছু ক্ষেত্রে দৃ stronger়তর অপ্টিমাইজেশানগুলি সম্পাদন করতে দেয়, অপ্টিমাইজেশন যা সাধারণত সি তে উপলব্ধ নয় in

এক বিখ্যাত উদাহরণ সামলাচ্ছে হয় এলিয়াসিং । ফোর্টরানে, আপনি কেবল সেই স্মৃতি অঞ্চলের সাথে সম্পর্কিত নির্দিষ্ট চিহ্ন থাকা সত্ত্বেও একটি নির্দিষ্ট মেমরি অঞ্চল অ্যাক্সেস করতে পারেন। এই জ্ঞানটি সংকলককে যখন ক্যাশের সময় হওয়ার সময় স্মার্ট ট্রিকস নিয়োগ করতে দেয়: এটি কোনও মান সম্ভাব্যভাবে পরিবর্তিত হয়েছে কিনা তা জানে। F90 অবধি, এটি সহজে যাচাই করা হয়েছিল। ফোর্টরান 90 প্রবর্তিত হলে pointers, অনুমানটি আর সত্য ছিল না: আপনি দুটি (বা আরও) চিহ্নের মাধ্যমে একই মেমরি অঞ্চলটি অ্যাক্সেস করতে পারেন। targetপয়েন্টারগুলির মাধ্যমে আপনি ঠিক করতে চান এমন অ্যারেগুলির জন্য আপনাকে নির্দিষ্ট করতে হবে এই কারণ ।

আরেকটি আকর্ষণীয় সত্য হ'ল অনেকগুলি কনস্ট্রাক্ট কম্পাইলারকে ব্যবহারকারীর হস্তক্ষেপ ছাড়াই সমান্তরালতা সম্পাদন করতে দেয়। ভাষা হিসাবে ফোর্টরানের আপেক্ষিক "প্ল্যাটফর্ম অজ্ঞেয়বাদ" এর কারণে এ জাতীয় বিলাসিতা সম্ভব।

এর মতো আরও অনেক সূক্ষ্ম কৌশল রয়েছে। এছাড়াও, মনে রাখবেন যে আজ কেউ ফোর্টরান ব্যবহার করেন না, সংখ্যার গণনা ব্যতীত, অর্থাত ফোর্টরান সংকলকগুলির মূল বৈশিষ্ট্য এবং বিক্রয় বিন্দু ফলাফলের কোড গতি। ফলস্বরূপ, বিক্রেতারা এতে মনোনিবেশ করেছেন।

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


2
যখন আপনার কম্পিউটারগুলি> $ 100 মিলিয়ন রেঞ্জের মধ্যে আসে, লোকেরা সময় (গ্রেড শিক্ষার্থীরা) তুলনায় বেশ ব্যয়বহুল দেখা বন্ধ করে দেয়।
ফিল মিলার

6
@ নব্যলোক্র্যাট: ১০০ মিলিয়ন ডলার কম্পিউটারে যে পরিমাণ কোড চলবে তা অগণিত লোকজন লিখেছেন যা গ্রেড শিক্ষার্থীর দামেও ১০০ মিলিয়ন ডলার ছাড়িয়ে যায় । মনে রাখবেন যে কোনও ব্যক্তির ব্যয় তার আয়ের দ্বিগুণ। বাকীগুলি করের সাথে যায় এবং সংযুক্ত থাকে। এছাড়াও, একটি কম্পিউটার জ্বলে উঠার অভিজ্ঞতা নেই। একজন ব্যক্তি করেন, এবং চাকরি পরিবর্তন করবেন।
স্টেফানো বোরিনি

1
@ স্টেফানোবোরিনী আমার পিসিগুলির একটি দীর্ঘ ইতিহাস রয়েছে যা জ্বলতে গিয়েছিল ...
N74

1
"তদ্ব্যতীত, মনে রাখবেন যে আজ সংখ্যাগন গণনা ব্যতীত কেউই ফোর্টরান ব্যবহার করেন না," ফোর্টরান = "ফর্মুলা ট্রান্সলেশন"। ফোর্টরান সর্বদা প্রাথমিকভাবে ব্যবহৃত হত এবং সংখ্যার গণনার জন্য ডিজাইন করা হত। ফোর্টরানের উচ্চতর পারফরম্যান্স কম্পিউটারের সময়ের একটি বড় অংশ রয়েছে।
ব্যবহারকারী 21387 19

আজ, পাশাপাশি সর্বদা, ফোর্টরান সমস্ত একই উদ্দেশ্যে ব্যবহৃত হয় - সংখ্যার গণনা।
ক্রম

12

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

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


8

এখানে শহুরে পৌরাণিক কাহিনী সম্পর্কে সতর্ক থাকুন। যদি দুটি সংকলক একই সমাবেশ কোড উত্পন্ন করে, তবে ফলস্বরূপ প্রোগ্রামগুলি একই কার্য সম্পাদন করবে।

যে কোনও যুক্তিযুক্ত অংশের জন্য, এসেম্বলি ভাষায় একটি প্রোগ্রাম রয়েছে যা এর কার্যকরকরণের সময়কে কমিয়ে দেয়। এই প্রোগ্রামটি কোন কম্পাইলার এটি তৈরি করেছে তা বিবেচ্য নয়।

এটি বলেছিল, প্রোগ্রামারটির জীবন সহজ করার জন্য সংকলিত ভাষা বিদ্যমান। এর ব্যয়ের অংশটি হ'ল তারা এমন বৈশিষ্ট্যগুলি ব্যবহার করে ব্যবহারকারীকে প্ররোচিত করতে পারে যার ফলস্বরূপ ন্যূনতম কার্যকর সময় হয় না। এর প্রধান উদাহরণটি newসি ++ এ। (এটি ধীরে ধীরে কী হতে পারে - এটি কেবল তিনটি অক্ষর?) এটি আপনাকে কার্যকরভাবে মেমরি বরাদ্দ করার জন্য অনুরোধ জানায় এবং রানটাইম ব্যয়ের দিকে কোনও মনোযোগ দেয় না। আপনি যদি এটি করতে চান তবে তা ভয়াবহ, তবে ফোর্টরান দ্রুত হতে পারে কারণ এটি আপনাকে এটি করতে চুষেনি।

তবে এর বাইরে, আমি কখনই এমন কোনও প্রোগ্রাম দেখিনি যে, প্রথম লিখিত হিসাবে, সংকলকটি কখনই আপনার পক্ষে পরিষ্কার করতে পারে না তার পারফরম্যান্স উন্নতির জন্য প্রধান জায়গা নেই। একটি উদাহরণ হিসাবে, একই আর্গুমেন্টের সাথে বারবার কল করা expএবং / অথবা logবারবার একটি বড় অংশ ব্যয় করা । অন্য উদাহরণ হিসাবে, ডিজিএমএমএমকে ম্যাট্রিককে গুণিত করা এবং এটি খুঁজে পাওয়া যে সময়ের একটি বড় অংশ এলএসএমকে কল করার জন্য কেবল তার ইনপুট চরিত্রের যুক্তিগুলি বোঝার জন্য যায়।

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


4
আমি এটিকে কেবল একটি নগরকাহিনী মনে করি না। পুরো অ্যারে অপারেশনগুলির জন্য ফোর্টরানের সমর্থন, খাঁটি / এলিমেন্টাল ফাংশন ইত্যাদি ইত্যাদি সংকলক সহজেই অপ্টিমাইজ / ভেক্টরাইজ করতে বা সমান্তরাল করতে সহায়তা করতে পারে। উদাহরণস্বরূপ, চিন্তাভাবনা সমান্তরাল . com/2007/08/14/… দেখুন । সংকলকরা আসলে যা করে তা হ'ল ভিন্ন গল্প (বিক্রেতার উপর নির্ভর করে)।
stali

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