gpt4 book ai didi

windows - 从 excel 文件读取时 CPU 使用率达到 100%?

转载 作者:可可西里 更新时间:2023-11-01 10:56:44 35 4
gpt4 key购买 nike

我创建了一个 VB.Net 应用程序,它将读取 excel 文件并将数据放入表格中。我使用了一个包含 3 列和 65000 行的 Excel 工作表。在开始读取 excel 之前,我机器的 CPU 使用率约为 15%,但在读取过程中,CPU 使用率跃升至 95%。我不知道为什么会这样?有人可以帮我解决这个问题吗?以下是我编写的代码:

Private Sub readFromExcel(ByVal fileName As String, ByVal sheetName As String)
Dim connString As String = "data source=XE; user=test; password=test"
Dim con As New OracleConnection(connString)
Dim str1 As String
Dim str2 As String
Dim str3 As String
Dim xlApp As Excel.Application
Dim xlWorkBook As Excel.Workbook
Dim xlWorkSheet As Excel.Worksheet
xlApp = New Excel.ApplicationClass
xlWorkBook = xlApp.Workbooks.Open(fileName)
xlWorkSheet = xlWorkBook.Worksheets(sheetName)
Dim x As Integer
Dim y As Integer
Dim i As Integer
x = xlWorkSheet.Rows.Count()
y = xlWorkSheet.Columns.Count()
Try
For i = 1 To x - 1
'MsgBox(xlWorkSheet.Cells(i, 0).value)
str1 = xlWorkSheet.Cells(i, 1).value
str2 = xlWorkSheet.Cells(i, 2).value
str3 = xlWorkSheet.Cells(i, 3).value
insertData()
Next
Catch ex As Exception
MsgBox(ex.Message())
Finally
con.Close()
xlWorkBook.Close()
End Try
End Sub

Private Sub insertData()
Dim str As String
str = "insert into test_import values('" + str1 + "'," + str2 + "," + str3 + ")"
Dim cmd As New OracleCommand()
cmd.CommandText = str
cmd.Connection = con
cmd.ExecuteNonQuery()
End Sub

提前致谢。

最佳答案

这是完全正常的。当一个程序因 I/O 陷入困境时,它不会消耗 100% 的核心。从磁盘或网卡读取,在操作系统提供数据时阻止程序。您的代码不会那样陷入困境,您是在要求它做很多工作。一个一个地获取 195,000 个单元格值只需要一段时间。 Excel 是一个进程外的 COM 服务器,因此每个单元格读取都需要两次 CPU 上下文切换。您可以通过使用 Range 来稍微优化它。或者在配备双核 CPU 的机器上运行它,这样它最多只能达到 50%。

功能,不是错误。

关于windows - 从 excel 文件读取时 CPU 使用率达到 100%?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10028216/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com