Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/8: Рейтинг темы: голосов - 8, средняя оценка - 4.75
29 / 6 / 2
Регистрация: 05.10.2012
Сообщений: 117
1

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

22.08.2014, 13:26. Показов 1526. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
У меня такая проблема, программа долго считывает данные с файла, компилю в 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 чисел считывает мгновенно. Что за фигня?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
22.08.2014, 13:26
Ответы с готовыми решениями:

Как считывается информация с файлов?
Объясните кто-нибудь как производить считывание информации с файлов и вообще полезное о работе с...

Запись в файл не происходит, информация считывается неверно (найти и исправить ошибки в коде)
Здравствуйте. Программа скомпилировалась, запускается, но плохо работает. Файл открывается, данные...

Не считывается информация из файла
#include <stdio.h> #include <stdlib.h> int main (void) { int i; int a; FILE...

Информация записывается или считывается из файла в неверной кодировке
Записываю в файл строку из текстбокса Key private void ключToolStripMenuItem1_Click(object sender,...

11
3 / 3 / 2
Регистрация: 21.08.2014
Сообщений: 17
22.08.2014, 13:58 2
Пробовали объявить массив глобально?
0
29 / 6 / 2
Регистрация: 05.10.2012
Сообщений: 117
22.08.2014, 14:00  [ТС] 3
А какой в этом смысл? Попробовал на всякий случай, но ничего не изменилось.
0
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];
}
0
2278 / 1769 / 741
Регистрация: 27.07.2012
Сообщений: 5,254
22.08.2014, 14:14 5
Скинь файл, который считываешь.
0
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])
{
}

0
29 / 6 / 2
Регистрация: 05.10.2012
Сообщений: 117
22.08.2014, 14:39  [ТС] 7
Количество данных заранее неизвестно, так что надо использовать eof.
freopen у меня не работает, пишет функция небезопасна, попробовал через freopen_s, также долго считывает.
Вот файл.
Вложения
Тип файла: rar input.rar (264.3 Кб, 7 просмотров)
0
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();
}
0
2278 / 1769 / 741
Регистрация: 27.07.2012
Сообщений: 5,254
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");
}
Миниатюры
Долго считывается информация с файла  
0
2278 / 1769 / 741
Регистрация: 27.07.2012
Сообщений: 5,254
22.08.2014, 14:50 10
Это с твоим файлом. 1 000 000 чисел считывает приблизительно 2.5 секунды.
Может, у тебя какой-нибудь жёсткий антивирус стоит, который твою прогу подозрительной считает и каждое её действие проверяет? Как вариант...
0
29 / 6 / 2
Регистрация: 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.
0
2278 / 1769 / 741
Регистрация: 27.07.2012
Сообщений: 5,254
22.08.2014, 15:39 12
Цитата Сообщение от Aspirin Посмотреть сообщение
время заняло 0.7 на 100000
Ну как-то в три раза больше, чем у меня. Так это я ещё debug-версию запускал. Release работает в разы быстрее. 1 000 000 чисел за 1.1 сек считал.
Миниатюры
Долго считывается информация с файла  
0
22.08.2014, 15:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2014, 15:39
Помогаю со студенческими работами здесь

Слишком долго считывается файл XL
Суть в следующем: есть файл XL, в нем 30 вкладок, на 20 вкладках таблицы 30*8, на 10 - 30*30 В...

Информация не считывается с сокета
Доброе время суток! Есть сервер,который принимает инфу через сокеты. После clientSocket =...

TCP. Информация считывается только по 4 байта и меньше
Прив. Есть такой код сервера #include &lt;cstdio&gt; #include &lt;iostream&gt; #include &lt;winsock2.h&gt;...

Не считывается текст с файла
Не считывается текст с файла в прогу не могу найти ошибку может кто сказать где ошибка или с...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru