Как работают оптимизации GCC под капюшоном?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как работают оптимизации GCC под капюшоном?

Сообщение Anonymous »

Эта проблема возникла, когда я писал программу для получения размеров файлов. Я хотел узнать больше об управлении файлами и другими вещами, связанными с файлами, поэтому я написал программу C ++, используя библиотеки Fstream и FileSystem, чтобы получить кучу информации обо всех файлах в папке, указанной пользователем (полученная с использованием CIN ) и его подпапников, а затем организовать данные, основанные на одном из типов информации, возвращаемых из файла (размер файла в моем случае). Программа не является оптимизированной, далеко от нее, но она достаточно быстро, чтобы вернуть несколько тысяч файлов за пару секунд. Логика для этого процесса относительно проста. Очистите файл 'Dimp.txt', затем получите папку с помощью CIN и добавляет его в вектор, содержащий каталоги для поиска. Затем перечислите по каталогам в векторе, используя цикл while, и сохраните всю информацию о файле в пользовательском struct fileinfo и добавьте ее в вектор . Теперь, когда у нас есть все данные файла в векторе, перевернуть его и поместить все это в «Dimp.txt». Исходный код ниже. < /P>

Код: Выделить всё

#include 
#include 
#include 
using namespace std;
using namespace filesystem;

struct fileInfo {
public:
path name;
path dir;
size_t size;
fileInfo(path _filename, path _fileDir, size_t _fileSize) {
name = _filename;
dir = _fileDir;
size = _fileSize;
}
};

enum NDS {name, dir, size};
const map byteSuffixes = {
{0, "bytes"},
{1, "KB"},
{2, "MB"},
{3, "GB"},
{4, "TB"}
};

void vectorSort(vector &_v, const NDS _sortby) {
vector res;
map fileSizes;
map
 fileNames;
map fileDirectories;
for (const fileInfo _f : _v) {
fileSizes.insert({_f.size, _f});
fileNames.insert({_f.name, _f});
fileDirectories.insert({_f.dir, _f});
}

switch (_sortby) {
case NDS::name: {
for (const auto name : fileNames) {res.push_back(name.second);}
break;
}
case NDS::dir: {
for (const auto directory : fileDirectories) {res.push_back(directory.second);}
break;
}
case NDS::size: {
for (const auto size : fileSizes) {res.push_back(size.second);}
break;
}
default:
break;
}

_v = res;
}

void clearFile(const string filename) {
fstream dump(filename);
if (dump.is_open()) {
dump.ignore(2);
} else {
cout  initDir;
if (!filesystem::exists(path(initDir))) {
cout  longestDirName) ? parentDir.string().length() : longestDirName;
}
}
} catch (const filesystem_error& e) {
cerr 

Подробнее здесь: [url]https://stackoverflow.com/questions/79770097/how-do-gcc-optimisations-work-under-the-hood[/url]
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»