#include <iostream>
#include <vector>
#include <chrono> // Untuk mengukur waktu (kecepatan)
using namespace std;
// Fungsi Utama
int main() {
// 1. Peningkatan Penyimpanan (Menggunakan tipe data yang lebih kecil)
// Tipe 'short' umumnya menggunakan 2 byte, lebih hemat dari 'int' (4 byte).
vector<short> data_hemat_memori;
int jumlah_data = 10000;
// Alokasi memori awal untuk 10000 data
data_hemat_memori.reserve(jumlah_data);
// Isi data
for (int i = 0; i < jumlah_data; ++i) {
data_hemat_memori.push_back(i % 100); // Nilai kecil
}
cout << "✅ Simulasi Peningkatan Penyimpanan & Kecepatan\n";
cout << "-----------------------------------------------\n";
cout << "* Jumlah elemen: " << data_hemat_memori.size() << endl;
// sizeof(short) = 2 byte
cout << "* Perkiraan total memori (bytes): " << data_hemat_memori.size() * sizeof(short) << endl;
// 2. Peningkatan Kecepatan (Akses data Array/Vector secara langsung)
// Akses dengan indeks (O(1)) adalah sangat cepat.
int indeks_cari = 5000; // Indeks yang akan diakses
short nilai_ditemukan;
// Mulai pengukuran waktu
auto waktu_mulai = chrono::high_resolution_clock::now();
// Operasi Akses Cepat (Kecepatan)
nilai_ditemukan = data_hemat_memori[indeks_cari];
// Selesai pengukuran waktu
auto waktu_selesai = chrono::high_resolution_clock::now();
// Hitung durasi dalam nanosecond
auto durasi = chrono::duration_cast<chrono::nanoseconds>(waktu_selesai - waktu_mulai);
cout << "\n--- Hasil Kecepatan Akses ---\n";
cout << "* Data pada indeks " << indeks_cari << ": " << nilai_ditemukan << endl;
cout << "* Waktu Akses (nanoseconds): " << durasi.count() << endl;
cout << "\nDengan menggunakan struktur data yang efisien (seperti array/vector) dan tipe data yang tepat,\n"
<< "program dapat **menghemat memori (penyimpanan)** dan **mempercepat akses data (kecepatan)**.\n";
return 0;
}