Folly C++ गाइड: उदाहरण, उपयोग और ट्यूटोरियल

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Folly C++: उदाहरणों के साथ संपूर्ण गाइड

1. Folly क्या है और इसकी आवश्यकता क्यों है?

Folly (Facebook Open-source LibrarY) एक C++ कंपोनेंट्स की लाइब्रेरी है, जिसे Facebook (अब Meta) द्वारा विकसित और उपयोग किया जाता है। यह हाई-परफॉर्मेंस, अच्छी तरह से टेस्टेड और आधुनिक यूटिलिटीज़ का एक सेट है, जो C++ स्टैंडर्ड लाइब्रेरी (std) और Boost में मौजूद कमियों को भरता है। Folly, STL का विकल्प नहीं है, बल्कि इसका एक विस्तार है, जो बड़े पैमाने पर वितरित सिस्टम और हाई-लोड सर्वर डेवलपमेंट के दौरान आने वाली सामान्य समस्याओं के समाधान प्रदान करता है।

Folly की आवश्यकता क्यों है? आधुनिक C++ डेवलपमेंट में अक्सर ऐसे टूल्स की ज़रूरत होती है जो स्टैंडर्ड लाइब्रेरी में उपलब्ध नहीं हैं: विशिष्ट गुणों वाले कुशल कंटेनर (जैसे F14HashMap), एसिंक्रोनस प्रोग्रामिंग के लिए टूल्स (Futures), ऑप्टिमाइज़्ड मेमोरी बैरियर के साथ एटॉमिक ऑपरेशन (AtomicHashMap), लॉक-फ्री मेमोरी वर्क (ConcurrentSkipList) और कई अन्य लो-लेवल ऑप्टिमाइज़ेशन। Folly यह सब तैयार और युद्ध-परीक्षित कंपोनेंट्स के रूप में प्रदान करता है। यह विशेष रूप से उन डेवलपर्स के लिए उपयोगी है जो परफॉर्मेंट सर्वर-साइड कोड लिखते हैं, नेटवर्क प्रोटोकॉल के साथ काम करते हैं, बड़े डेटा सेट को हैंडल करते हैं, या मल्टी-थ्रेडेड सीनारियो में डिटरमिनिस्टिक व्यवहार चाहते हैं।

Folly का मुख्य लाभ इसका परफॉर्मेंस और सहीता पर फोकस है। Folly में कई एल्गोरिदम C++ (C++14/17/20) की नवीनतम सुविधाओं का उपयोग करके लागू किए गए हैं और आधुनिक प्रोसेसर (कैश, ब्रांच प्रेडिक्शन, SIMD इंस्ट्रक्शन) की विशेषताओं को ध्यान में रखते हैं। यह सिर्फ "एक और लाइब्रेरी" नहीं है, बल्कि टूल्स का एक सेट है जो आपको शुद्ध STL या Boost पर आधारित समाधानों की तुलना में तेज़ और अधिक कुशल कोड लिखने में मदद करता है, खासकर उच्च प्रतिस्पर्धा की स्थितियों में।

2. इंस्टॉलेशन

Folly एक C++ लाइब्रेरी है, इसलिए इसे pip या npm के माध्यम से इंस्टॉल नहीं किया जाता है। इसका उपयोग करने के लिए, आपको सोर्स कोड से लाइब्रेरी को बिल्ड करना होगा और इसे अपने प्रोजेक्ट से लिंक करना होगा। अनुशंसित तरीका CMake बिल्ड सिस्टम का उपयोग करना है।

vcpkg के माध्यम से इंस्टॉलेशन (Windows और Linux के लिए अनुशंसित)

# vcpkg इंस्टॉल करें, अगर पहले से नहीं है
git clone https://github.com/Microsoft/vcpkg.git
cd vcpkg
./bootstrap-vcpkg.sh  # या Windows के लिए bootstrap-vcpkg.bat
./vcpkg integrate install

# Folly इंस्टॉल करें
./vcpkg install folly:x64-windows  # Windows के लिए
./vcpkg install folly:x64-linux    # Linux के लिए

Conan के माध्यम से इंस्टॉलेशन

pip install conan
conan remote add bincrafters https://api.bintray.com/conan/bincrafters/public-conan
conan install folly/2023.01.30@ -r bincrafters

सोर्स कोड से बिल्ड करना (Linux/macOS)

git clone https://github.com/facebook/folly
cd folly
mkdir build && cd build
cmake ..
make -j$(nproc)
sudo make install

प्रोजेक्ट से कनेक्ट करना (CMake)

find_package(folly REQUIRED)
target_link_libraries(my_project PRIVATE Folly::folly)

3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण

निम्नलिखित उदाहरण एसिंक्रोनस टास्क निष्पादन के लिए folly::Future और स्ट्रिंग फ़ॉर्मेटिंग के लिए folly::format के उपयोग को दर्शाता है।

#include <iostream>
#include <folly/futures/Future.h>
#include <folly/Format.h>

using namespace folly;

int main() {
    // एसिंक्रोनस टास्क: संख्या 42 लौटाएं
    auto future = makeFuture(42);

    // प्रोसेसिंग चेन: 2 से गुणा करें और स्ट्रिंग में बदलें
    auto result = future
        .thenValue([](int x) { return x * 2; })
        .thenValue([](int x) { return format("परिणाम: {}", x); })
        .get(); // परिणाम मिलने तक थ्रेड को ब्लॉक करें

    std::cout << result << std::endl; // आउटपुट: परिणाम:                    

अनुशंसाएँ