Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
4 / 4 / 0
Регистрация: 07.04.2010
Сообщений: 261
1

Обычный код чтения файла на VB6 работает намного быстрее, чем на VB2005 ! ПОЧЕМУ ?

18.07.2017, 21:50. Просмотров 995. Ответов 5
Метки нет (Все метки)


Переделал прогу с VB6 на VB2005. Она стала работать намного медленнее. Нашел фрагмент кода - виновника,
вот он на VB6:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
Private Sub Command1_Click()
        For i2 = 1 To 1000
            Open "c:\temp\tab.txt" For Input As #2
            Input #2, i9
 
            For i = 1 To 690
                Input #2, i9
            Next
            Close 2
        Next
End Sub
вот он на VB2005:

vb.net
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
       
        Dim i, i1, i2 As Short
       
        For i2 = 1 To 1000
            FileOpen(2, "c:\temp\tab.txt", OpenMode.Input)
            Input(2, i)
 
            For i = 1 To 690
                Input(2, i1)
            Next
            FileClose(2)
        Next
 
 
 
    End Sub
загружаемый файл во вложении

разница в скорости огромная (в несколько раз), в чем причина ?
0
Вложения
Тип файла: zip tab.zip (1.4 Кб, 6 просмотров)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.07.2017, 21:50
Ответы с готовыми решениями:

Почему код, написанный на С++, в разы быстрее работает с большим объемом памяти, чем с маленьким?
Привет! Понадобилось мне сравнить скорость работы идентичных алгоритмов на Fortran и C++. Алгоритм...

Почему память работает намного медленнее, чем процессор?
Как решают эту проблему?

Перевести код чтения файла с VB6
всем доброго дня. Помогите переделать код написанный на VB 6.0 в код на VB.Net dim daystart as...

Почему стандартная сортировка вектора std::sort намного быстрее сортировки вставками/пузырьком?
Здравствуйте, объясните, пожалуйста, как реализована std::sort. Ясно, что через итераторы, но...

5
1377 / 1282 / 297
Регистрация: 03.10.2012
Сообщений: 1,342
18.07.2017, 23:24 2
GIP, Open в VB6 и FileOpen в VB.NET - это не одно и и тоже. В Vb6 не предусмотрено чтение файла целиком,
там все делается в циклах. Поэтому не пытайтесь дословно переводить код. В .NET чтение файла в переменную
делается одной строкой
vb.net
1
Dim str as String = IO.File.ReadAllText("Path")
В вашем же переводе код делает следующее: тысячу раз открывается файл (и 1000 раз закрывается) и в переменную
i считывается текст файла, при этом каждый раз по 690 раз в переменную i1 тоже считывается весь текст.
Отсюда и дикие тормоза.
1
Лень — мое второе и
2961 / 2190 / 639
Регистрация: 28.11.2014
Сообщений: 3,343
Записей в блоге: 2
18.07.2017, 23:25 3
GIP, А что необходимо сделать то? Ну после чтения файла. Может просто все это можно провернуть проще
0
es geht mir gut
11222 / 4699 / 1178
Регистрация: 27.07.2011
Сообщений: 11,426
19.07.2017, 09:50 4
Цитата Сообщение от MrCrown Посмотреть сообщение
В Vb6 не предусмотрено чтение файла целиком,
там все делается в циклах
Да что Вы говорите . А мужики-то не знают (с).

Visual Basic
1
2
3
4
5
6
7
  Private Sub ReadFile(ByVal fn As String, ByRef s As String)
    Dim ff As Long 
    ff = FreeFile                               'получаем свободный номер файла
    Open App.Path & "" &  fn For Input As #ff            'открываем файл для чтения
         s=Input(LOF(ff), #ff)             'считываем текстовый файл целиком
    Close #ff 
End Sub
2
1377 / 1282 / 297
Регистрация: 03.10.2012
Сообщений: 1,342
19.07.2017, 10:11 5
Цитата Сообщение от SoftIce Посмотреть сообщение
Да что Вы говорите . А мужики-то не знают
SoftIce, да, это я что-то не по делу ляпнул VB6 подзабыл основательно
0
4 / 4 / 0
Регистрация: 07.04.2010
Сообщений: 261
19.07.2017, 19:42  [ТС] 6
большое спасибо за ответы, переколбасю код....
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.07.2017, 19:42

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь или здесь.

Почему программа на Lazarus работает быстрее, чем на C++Builder?
Здравствуйте! Вопрос выкладываю на два форума - C++Builder и Lazarus. Это, пожалуй, не вопрос, а...

Почему VB выполняется намного медленнее, чем VBA?
Сделал макрос на VBA в CoreDraw (перебирает объекты, проверяет их свойства итд). Попытался...

Почему с Яндекса намного больше посетителей, чем с гугла?
<p>Здравствуйте! Уже как 3 месяца с Яндекса намного больше посетителей, чем с гугла? Например,...

Парсер на сервере работает намного медленнее чем на Денвере!
Здравствуйте! Сделал свой первый парсер, но на сервере он работает намного медленнее чем на...


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

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.