Форум программистов, компьютерный форум CyberForum.ru

Долго считывается информация с файла - C++

Восстановить пароль Регистрация
 
Aspirin
29 / 6 / 0
Регистрация: 05.10.2012
Сообщений: 117
22.08.2014, 13:26     Долго считывается информация с файла #1
У меня такая проблема, программа долго считывает данные с файла, компилю в VS2013. Вот кусок кода:
C++
1
2
3
4
5
6
7
8
9
10
11
    ifstream in("input.txt");
    ofstream out("output.txt");
    
    int a[100000];
    int n = -1;
    while (!in.eof())
    {
        n++;
        in >> a[n];
 
    }
Я засек, 10000 чисел считывает 12 секунд, так и должно быть?
В делфи 1000000 чисел считывает мгновенно. Что за фигня?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.08.2014, 13:26     Долго считывается информация с файла
Посмотрите здесь:

C++ Неправильно считывается структура из файла
Как считывается информация с файлов? C++
C++ Как считывать информация с файла по байтам
Не считывается файл C++
Структуры.не считывается из файла C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DieMore
3 / 3 / 2
Регистрация: 21.08.2014
Сообщений: 17
22.08.2014, 13:58     Долго считывается информация с файла #2
Пробовали объявить массив глобально?
Aspirin
29 / 6 / 0
Регистрация: 05.10.2012
Сообщений: 117
22.08.2014, 14:00  [ТС]     Долго считывается информация с файла #3
А какой в этом смысл? Попробовал на всякий случай, но ничего не изменилось.
DieMore
3 / 3 / 2
Регистрация: 21.08.2014
Сообщений: 17
22.08.2014, 14:08     Долго считывается информация с файла #4
Так не пойдет?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <fstream>
#include <iostream>
 
using namespace std;
 
int a[100000];
 
int main()
{
    freopen("input.txt","r",stdin);
    freopen("output.txt","w",stdout);
 
    for (int i = 0; i < 100000; i++)
        cin >> a[i];
}
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
22.08.2014, 14:14     Долго считывается информация с файла #5
Скинь файл, который считываешь.
Jupiter
22.08.2014, 14:20
  #6

Не по теме:

Цитата Сообщение от Aspirin Посмотреть сообщение
C++
1
2
3
4
5
6
int n = -1;
while (!in.eof())
{
    n++;
    in >> a[n];
}
C++
1
2
3
4
int n = -1;
while (n < 100000 && in >> a[++n])
{
}

Aspirin
29 / 6 / 0
Регистрация: 05.10.2012
Сообщений: 117
22.08.2014, 14:39  [ТС]     Долго считывается информация с файла #7
Количество данных заранее неизвестно, так что надо использовать eof.
freopen у меня не работает, пишет функция небезопасна, попробовал через freopen_s, также долго считывает.
Вот файл.
Вложения
Тип файла: rar input.rar (264.3 Кб, 6 просмотров)
DieMore
3 / 3 / 2
Регистрация: 21.08.2014
Сообщений: 17
22.08.2014, 14:47     Долго считывается информация с файла #8
Тупанул,простите.
Так пробовали?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <fstream>
#include <iostream>
 
using namespace std;
 
int a[100000];
 
int main()
{
    ifstream fin("input.txt");
    ofstream fout("output.txt");
    
 
    int n = 0;
 
    while(!fin.eof()) {
 
        fin >> a[n++];
    }
    fout << n;
 
    fin.close();
    fout.close();
}
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
22.08.2014, 14:48     Долго считывается информация с файла #9
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#include <iostream>
#include <fstream>
#include <stdlib.h>
#include <time.h>
 
int main(void)
{
    std::ifstream in("input2.txt");
 
    int * a = new int [1000000];
    int n = 0;
 
    clock_t time_start = clock();
    while (!in.eof())
    {
        in >> a[n++];
    }
    clock_t time_stop = clock();
 
    delete [] a;
 
    double duration = (double)(time_stop - time_start) / CLOCKS_PER_SEC;
    std::cout << "Loaded " << n - 1 << " numbers in " << duration << " secs." << "\n";
    system("pause");
}
Миниатюры
Долго считывается информация с файла  
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
22.08.2014, 14:50     Долго считывается информация с файла #10
Это с твоим файлом. 1 000 000 чисел считывает приблизительно 2.5 секунды.
Может, у тебя какой-нибудь жёсткий антивирус стоит, который твою прогу подозрительной считает и каждое её действие проверяет? Как вариант...
Aspirin
29 / 6 / 0
Регистрация: 05.10.2012
Сообщений: 117
22.08.2014, 15:31  [ТС]     Долго считывается информация с файла #11
Вообщем главная проблема была в точке останова. Я поставил условие n==10000 и запускал, чтобы проверить время. Не знал, что она столько времени отнимает.
John Prick, вставил ваш код, время заняло 0.7 на 100000.
3000000 считало за 20 с. Как-то медленно, это может зависеть от компилятора? Я уж думал VS побыстрее Delphi будет, в Delphi те же 3000000 считало за 1.1.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
22.08.2014, 15:39     Долго считывается информация с файла
Еще ссылки по теме:

Не считывается строка из файла C++
Не выводится информация из файла C++
как сделать что бы информация из файла бралась рандомно C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
John Prick
754 / 687 / 123
Регистрация: 27.07.2012
Сообщений: 1,974
Завершенные тесты: 3
22.08.2014, 15:39     Долго считывается информация с файла #12
Цитата Сообщение от Aspirin Посмотреть сообщение
время заняло 0.7 на 100000
Ну как-то в три раза больше, чем у меня. Так это я ещё debug-версию запускал. Release работает в разы быстрее. 1 000 000 чисел за 1.1 сек считал.
Миниатюры
Долго считывается информация с файла  
Yandex
Объявления
22.08.2014, 15:39     Долго считывается информация с файла
Ответ Создать тему
Опции темы

Текущее время: 18:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru