Skip to content

Commit 8579cc4

Browse files
committed
Update backend Dependencies
Adjusted buffer sizes and removed unnecessary buffering for various COM3D2 file readers based on file size statistics, improving performance and memory usage. Replaced deprecated utility imports with updated binaryio usage. Added PresetService for reading, writing, and converting .preset files and their JSON representations. Updated dependencies in go.mod and go.sum, and incremented the application version to v1.6.2. Minor error message corrections and code cleanups were also applied.
1 parent 42355f1 commit 8579cc4

15 files changed

Lines changed: 209 additions & 64 deletions

File tree

frontend/wailsjs/runtime/runtime.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,10 @@ export function EventsOff(eventName, ...additionalEventNames) {
4848
return window.runtime.EventsOff(eventName, ...additionalEventNames);
4949
}
5050

51+
export function EventsOffAll() {
52+
return window.runtime.EventsOffAll();
53+
}
54+
5155
export function EventsOnce(eventName, callback) {
5256
return EventsOnMultiple(eventName, callback, 1);
5357
}

go.mod

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
module COM3D2_MOD_EDITOR_V2
22

3-
go 1.25
3+
go 1.25.4
44

55
require (
66
github.com/Masterminds/semver v1.5.0
7-
github.com/MeidoPromotionAssociation/MeidoSerialization v1.2.0
8-
github.com/emmansun/base64 v0.7.0
9-
github.com/wailsapp/wails/v2 v2.10.2
7+
github.com/MeidoPromotionAssociation/MeidoSerialization v1.3.1
8+
github.com/emmansun/base64 v0.8.0
9+
github.com/wailsapp/wails/v2 v2.11.0
1010
)
1111

1212
require (
1313
github.com/bep/debounce v1.2.1 // indirect
1414
github.com/go-ole/go-ole v1.3.0 // indirect
15-
github.com/godbus/dbus/v5 v5.1.0 // indirect
15+
github.com/godbus/dbus/v5 v5.2.0 // indirect
1616
github.com/google/uuid v1.6.0 // indirect
1717
github.com/gorilla/websocket v1.5.3 // indirect
1818
github.com/jchv/go-winloader v0.0.0-20250406163304-c1995be93bd1 // indirect
@@ -27,14 +27,14 @@ require (
2727
github.com/pkg/browser v0.0.0-20240102092130-5ac0b6a4141c // indirect
2828
github.com/pkg/errors v0.9.1 // indirect
2929
github.com/rivo/uniseg v0.4.7 // indirect
30-
github.com/samber/lo v1.51.0 // indirect
30+
github.com/samber/lo v1.52.0 // indirect
3131
github.com/tkrajina/go-reflector v0.5.8 // indirect
3232
github.com/valyala/bytebufferpool v1.0.0 // indirect
3333
github.com/valyala/fasttemplate v1.2.2 // indirect
34-
github.com/wailsapp/go-webview2 v1.0.21 // indirect; wails v2.10.2 not supported v1.0.22
34+
github.com/wailsapp/go-webview2 v1.0.23 // indirect; wails v2.10.2 not supported v1.0.22
3535
github.com/wailsapp/mimetype v1.4.1 // indirect
36-
golang.org/x/crypto v0.42.0 // indirect
37-
golang.org/x/net v0.44.0 // indirect
38-
golang.org/x/sys v0.36.0 // indirect
39-
golang.org/x/text v0.29.0 // indirect
36+
golang.org/x/crypto v0.45.0 // indirect
37+
golang.org/x/net v0.47.0 // indirect
38+
golang.org/x/sys v0.38.0 // indirect
39+
golang.org/x/text v0.31.0 // indirect
4040
)

go.sum

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
github.com/Masterminds/semver v1.5.0 h1:H65muMkzWKEuNDnfl9d70GUjFniHKHRbFPGBuZ3QEww=
22
github.com/Masterminds/semver v1.5.0/go.mod h1:MB6lktGJrhw8PrUyiEoblNEGEQ+RzHPF078ddwwvV3Y=
3-
github.com/MeidoPromotionAssociation/MeidoSerialization v1.2.0 h1:5iGqFZD/9nlWIiAXY7wSUw4U7GM88Yg8fEjoZZJDgeE=
4-
github.com/MeidoPromotionAssociation/MeidoSerialization v1.2.0/go.mod h1:AjomJa0Ctm7aAEqABAiIKjZUeBoTP+JYj4MiVEGcVWg=
3+
github.com/MeidoPromotionAssociation/MeidoSerialization v1.3.1 h1:VwGqEh4EaFVx90wZhhw1+pSGSgqFY1JsBuaebuo6Wx8=
4+
github.com/MeidoPromotionAssociation/MeidoSerialization v1.3.1/go.mod h1:Gtl5ZAvRU7M1hEZX0UbqJ5RVMxJ+nA4RnbxkvDoK89k=
55
github.com/bep/debounce v1.2.1 h1:v67fRdBA9UQu2NhLFXrSg0Brw7CexQekrBwDMM8bzeY=
66
github.com/bep/debounce v1.2.1/go.mod h1:H8yggRPQKLUhUoqrJC1bO2xNya7vanpDl7xR3ISbCJ0=
77
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
88
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
9-
github.com/emmansun/base64 v0.7.0 h1:fMZZM1oLD8gw7LvgWDNag1o/lOzCGZJLpC+41qNJo+o=
10-
github.com/emmansun/base64 v0.7.0/go.mod h1:Czh5fnzzJRyZdo/1kFcNa92BGYW/IZ1T5JGeJvl74kk=
9+
github.com/emmansun/base64 v0.8.0 h1:HSF5Yj8x7xAWeXG9nWesAflFTi5d9o1wlqhIGjvF1n8=
10+
github.com/emmansun/base64 v0.8.0/go.mod h1:IYGtqjG0NQwY+3EgUiDjDEXbFq9nFJ/W9fqDzkFcxPk=
1111
github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE=
1212
github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78=
13-
github.com/godbus/dbus/v5 v5.1.0 h1:4KLkAxT3aOY8Li4FRJe/KvhoNFFxo0m6fNuFUO8QJUk=
14-
github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA=
13+
github.com/godbus/dbus/v5 v5.2.0 h1:3WexO+U+yg9T70v9FdHr9kCxYlazaAXUhx2VMkbfax8=
14+
github.com/godbus/dbus/v5 v5.2.0/go.mod h1:3AAv2+hPq5rdnr5txxxRwiGjPXamgoIHgz9FPBfOp3c=
1515
github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
1616
github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
1717
github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg=
@@ -48,8 +48,8 @@ github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZN
4848
github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
4949
github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
5050
github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
51-
github.com/samber/lo v1.51.0 h1:kysRYLbHy/MB7kQZf5DSN50JHmMsNEdeY24VzJFu7wI=
52-
github.com/samber/lo v1.51.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0=
51+
github.com/samber/lo v1.52.0 h1:Rvi+3BFHES3A8meP33VPAxiBZX/Aws5RxrschYGjomw=
52+
github.com/samber/lo v1.52.0/go.mod h1:4+MXEGsJzbKGaUEQFKBq2xtfuznW9oz/WrgyzMzRoM0=
5353
github.com/stretchr/testify v1.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA=
5454
github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY=
5555
github.com/tkrajina/go-reflector v0.5.8 h1:yPADHrwmUbMq4RGEyaOUpz2H90sRsETNVpjzo3DLVQQ=
@@ -58,28 +58,28 @@ github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6Kllzaw
5858
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
5959
github.com/valyala/fasttemplate v1.2.2 h1:lxLXG0uE3Qnshl9QyaK6XJxMXlQZELvChBOCmQD0Loo=
6060
github.com/valyala/fasttemplate v1.2.2/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ=
61-
github.com/wailsapp/go-webview2 v1.0.21 h1:k3dtoZU4KCoN/AEIbWiPln3P2661GtA2oEgA2Pb+maA=
62-
github.com/wailsapp/go-webview2 v1.0.21/go.mod h1:qJmWAmAmaniuKGZPWwne+uor3AHMB5PFhqiK0Bbj8kc=
61+
github.com/wailsapp/go-webview2 v1.0.23 h1:jmv8qhz1lHibCc79bMM/a/FqOnnzOGEisLav+a0b9P0=
62+
github.com/wailsapp/go-webview2 v1.0.23/go.mod h1:qJmWAmAmaniuKGZPWwne+uor3AHMB5PFhqiK0Bbj8kc=
6363
github.com/wailsapp/mimetype v1.4.1 h1:pQN9ycO7uo4vsUUuPeHEYoUkLVkaRntMnHJxVwYhwHs=
6464
github.com/wailsapp/mimetype v1.4.1/go.mod h1:9aV5k31bBOv5z6u+QP8TltzvNGJPmNJD4XlAL3U+j3o=
65-
github.com/wailsapp/wails/v2 v2.10.2 h1:29U+c5PI4K4hbx8yFbFvwpCuvqK9VgNv8WGobIlKlXk=
66-
github.com/wailsapp/wails/v2 v2.10.2/go.mod h1:XuN4IUOPpzBrHUkEd7sCU5ln4T/p1wQedfxP7fKik+4=
67-
golang.org/x/crypto v0.42.0 h1:chiH31gIWm57EkTXpwnqf8qeuMUi0yekh6mT2AvFlqI=
68-
golang.org/x/crypto v0.42.0/go.mod h1:4+rDnOTJhQCx2q7/j6rAN5XDw8kPjeaXEUR2eL94ix8=
65+
github.com/wailsapp/wails/v2 v2.11.0 h1:seLacV8pqupq32IjS4Y7V8ucab0WZwtK6VvUVxSBtqQ=
66+
github.com/wailsapp/wails/v2 v2.11.0/go.mod h1:jrf0ZaM6+GBc1wRmXsM8cIvzlg0karYin3erahI4+0k=
67+
golang.org/x/crypto v0.45.0 h1:jMBrvKuj23MTlT0bQEOBcAE0mjg8mK9RXFhRH6nyF3Q=
68+
golang.org/x/crypto v0.45.0/go.mod h1:XTGrrkGJve7CYK7J8PEww4aY7gM3qMCElcJQ8n8JdX4=
6969
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
70-
golang.org/x/net v0.44.0 h1:evd8IRDyfNBMBTTY5XRF1vaZlD+EmWx6x8PkhR04H/I=
71-
golang.org/x/net v0.44.0/go.mod h1:ECOoLqd5U3Lhyeyo/QDCEVQ4sNgYsqvCZ722XogGieY=
70+
golang.org/x/net v0.47.0 h1:Mx+4dIFzqraBXUugkia1OOvlD6LemFo1ALMHjrXDOhY=
71+
golang.org/x/net v0.47.0/go.mod h1:/jNxtkgq5yWUGYkaZGqo27cfGZ1c5Nen03aYrrKpVRU=
7272
golang.org/x/sys v0.0.0-20200810151505-1b9f1253b3ed/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
7373
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
7474
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
7575
golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
7676
golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
77-
golang.org/x/sys v0.36.0 h1:KVRy2GtZBrk1cBYA7MKu5bEZFxQk4NIDV6RLVcC8o0k=
78-
golang.org/x/sys v0.36.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
77+
golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc=
78+
golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
7979
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
8080
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
81-
golang.org/x/text v0.29.0 h1:1neNs90w9YzJ9BocxfsQNHKuAT4pkghyXc4nhZ6sJvk=
82-
golang.org/x/text v0.29.0/go.mod h1:7MhJOA9CD2qZyOKYazxdYMF85OwPdEr9jTtBpO7ydH4=
81+
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
82+
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
8383
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
8484
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
8585
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

internal/service/COM3D2/anm.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ func (m *AnmService) ReadAnmFile(path string) (*COM3D2.Anm, error) {
3030
return anmData, nil
3131
}
3232

33-
br := bufio.NewReaderSize(f, 1024*1024*10) //10MB 缓冲区
33+
br := bufio.NewReaderSize(f, 1024*128) // 128KB 缓冲,7931 个样本中 90% 文件小于 97.35 KB,平均 848.27 KB,中位数 16.89 KB,最大 81.28 MB
3434
anmData, err := COM3D2.ReadAnm(br)
3535
if err != nil {
3636
return nil, fmt.Errorf("parsing the .anm file failed: %w", err)

internal/service/COM3D2/col.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ func (m *ColService) ReadColFile(path string) (*COM3D2.Col, error) {
3030
return colData, nil
3131
}
3232

33-
br := bufio.NewReaderSize(f, 1024*1024*1) //1MB 缓冲区
34-
colData, err := COM3D2.ReadCol(br)
33+
colData, err := COM3D2.ReadCol(f) // 无需缓冲,2690 个样本中 90% 的文件小于 1.65 KB
3534
if err != nil {
3635
return nil, fmt.Errorf("parsing the .col file failed: %w", err)
3736
}

internal/service/COM3D2/common.go

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import (
1111
"strings"
1212

1313
"github.com/MeidoPromotionAssociation/MeidoSerialization/serialization/COM3D2"
14-
"github.com/MeidoPromotionAssociation/MeidoSerialization/serialization/utilities"
14+
"github.com/MeidoPromotionAssociation/MeidoSerialization/serialization/binaryio"
1515
"github.com/MeidoPromotionAssociation/MeidoSerialization/tools"
1616
)
1717

@@ -154,13 +154,13 @@ func (m *CommonService) FileTypeDetermine(path string, strictMode bool) (fileInf
154154
fileInfo.StorageFormat = FormatBinary
155155

156156
// 尝试打开文件获取实际签名和版本
157-
signature, readErr := utilities.ReadString(f)
157+
signature, readErr := binaryio.ReadString(f)
158158
if readErr != nil {
159159
fmt.Printf("Warning: Failed to read signature from file %s: %v\n", path, readErr)
160160
return fileInfo, nil //读取失败也不返回错误,因为是非严格模式
161161
}
162162
fileInfo.Signature = signature
163-
version, readErr := utilities.ReadInt32(f)
163+
version, readErr := binaryio.ReadInt32(f)
164164
if readErr != nil {
165165
fmt.Printf("Warning: Failed to read version from file %s: %v\n", path, readErr)
166166
return fileInfo, nil
@@ -252,14 +252,14 @@ func (m *CommonService) FileTypeDetermine(path string, strictMode bool) (fileInf
252252

253253
// readBinaryFileType 从二进制文件读取类型信息的辅助函数
254254
func readBinaryFileType(rs io.ReadSeeker, fileType FileInfo) (FileInfo, error) {
255-
signature, err := utilities.ReadString(rs)
255+
signature, err := binaryio.ReadString(rs)
256256
if err != nil {
257257
// 如果读取签名失败,可能不是支持的二进制格式
258258
return fileType, fmt.Errorf("failed to read signature: %w", err)
259259
}
260260
fileType.Signature = signature
261261

262-
version, err := utilities.ReadInt32(rs)
262+
version, err := binaryio.ReadInt32(rs)
263263
if err != nil {
264264
return fileType, fmt.Errorf("failed to read version: %w", err)
265265
}

internal/service/COM3D2/mate.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ func (m *MateService) ReadMateFile(path string) (*COM3D2.Mate, error) {
3030
return mateData, nil
3131
}
3232

33-
br := bufio.NewReaderSize(f, 1024*1024*1) //1MB 缓冲区
34-
mateData, err := COM3D2.ReadMate(br)
33+
mateData, err := COM3D2.ReadMate(f) // .mate needs io.ReadSeeker
3534
if err != nil {
3635
return nil, fmt.Errorf("parsing the .mate file failed: %w", err)
3736
}

internal/service/COM3D2/menu.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,7 @@ func (s *MenuService) ReadMenuFile(path string) (*COM3D2.Menu, error) {
3030
return menuData, nil
3131
}
3232

33-
br := bufio.NewReaderSize(f, 1024*1024*1) //1MB 缓冲区
34-
menuData, err := COM3D2.ReadMenu(br)
33+
menuData, err := COM3D2.ReadMenu(f) // 无需缓冲,132831 个样本中 90% 文件小于: 1.14 KB,平均 898 B,中位数 687 B
3534
if err != nil {
3635
return nil, fmt.Errorf("parsing the .menu file failed: %w", err)
3736
}

internal/service/COM3D2/model.go

Lines changed: 5 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import (
44
"bufio"
55
"encoding/json"
66
"fmt"
7-
"io"
87
"os"
98
"strings"
109

@@ -31,8 +30,7 @@ func (m *ModelService) ReadModelFile(path string) (*COM3D2.Model, error) {
3130
return modelData, nil
3231
}
3332

34-
var rs io.ReadSeeker = f // 注意,读取 Material 时需要进行 Seek,因此这里不能使用 bufio.NewReader,读 .mate 能用是因为后续没有其他数据可以直接全部读取到内存
35-
modelData, err := COM3D2.ReadModel(rs)
33+
modelData, err := COM3D2.ReadModel(f) // .model need seek
3634
if err != nil {
3735
return nil, fmt.Errorf("parsing the .model file failed: %w", err)
3836
}
@@ -87,8 +85,7 @@ func (m *ModelService) ReadModelMetadata(path string) (*COM3D2.ModelMetadata, er
8785
return nil, fmt.Errorf("failed to read .model.json file: %w", err)
8886
}
8987
} else {
90-
var rs io.ReadSeeker = f
91-
modelData, err = COM3D2.ReadModel(rs)
88+
modelData, err = COM3D2.ReadModel(f)
9289
if err != nil {
9390
return nil, fmt.Errorf("parsing the .model file failed: %w", err)
9491
}
@@ -121,8 +118,7 @@ func (m *ModelService) WriteModelMetadata(inputPath string, outputPath string, m
121118
return fmt.Errorf("failed to read .model.json file: %w", err)
122119
}
123120
} else {
124-
var rs io.ReadSeeker = f
125-
modelData, err = COM3D2.ReadModel(rs)
121+
modelData, err = COM3D2.ReadModel(f)
126122
if err != nil {
127123
return fmt.Errorf("parsing the .model file failed: %w", err)
128124
}
@@ -155,8 +151,7 @@ func (m *ModelService) ReadModelMaterial(path string) ([]*COM3D2.Material, error
155151
return modelData.Materials, nil
156152
}
157153

158-
var rs io.ReadSeeker = f
159-
modelData, err := COM3D2.ReadModel(rs)
154+
modelData, err := COM3D2.ReadModel(f)
160155
if err != nil {
161156
return nil, fmt.Errorf("parsing the .model file failed: %w", err)
162157
}
@@ -183,8 +178,7 @@ func (m *ModelService) WriteModelMaterial(inputPath string, outputPath string, m
183178
return fmt.Errorf("failed to read.model.json file: %w", err)
184179
}
185180
} else {
186-
var rs io.ReadSeeker = f
187-
modelData, err = COM3D2.ReadModel(rs)
181+
modelData, err = COM3D2.ReadModel(f)
188182
if err != nil {
189183
return fmt.Errorf("parsing the .model file failed: %w", err)
190184
}

internal/service/COM3D2/nei.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ func (s *NeiService) ReadNeiFile(path string) (*COM3D2.Nei, error) {
2020
}
2121
defer f.Close()
2222

23-
br := bufio.NewReaderSize(f, 1024*1024*1) //1MB 缓冲区
23+
br := bufio.NewReaderSize(f, 1024*4) //4KB 缓冲区, 175 个样本中 90% 文件小于 2.94 KB,中位数 1.72 KB,平均 1.89 KB
2424
neiData, err := COM3D2.ReadNei(br, nil)
2525
if err != nil {
2626
return nil, fmt.Errorf("parsing the .nei file failed: %w", err)
@@ -33,13 +33,13 @@ func (s *NeiService) ReadNeiFile(path string) (*COM3D2.Nei, error) {
3333
func (s *NeiService) WriteNeiFile(neiData *COM3D2.Nei, path string) error {
3434
f, err := os.Create(path)
3535
if err != nil {
36-
return fmt.Errorf("unable to create .neiData file: %w", err)
36+
return fmt.Errorf("unable to create .nei file: %w", err)
3737
}
3838
defer f.Close()
3939

4040
bw := bufio.NewWriter(f)
4141
if err := neiData.Dump(bw); err != nil {
42-
return fmt.Errorf("failed to write to .neiData file: %w", err)
42+
return fmt.Errorf("failed to write to .nei file: %w", err)
4343
}
4444
if err := bw.Flush(); err != nil {
4545
return fmt.Errorf("an error occurred while flush bufio: %w", err)

0 commit comments

Comments
 (0)