質問編集履歴

3

修正

2024/06/07 11:31

投稿

tex2345rr
tex2345rr

スコア0

test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,6 @@
1
1
  Go言語のgorutineゴルーチン、並列処理において、go func()をただつかっただけの実装Aと、
2
2
  チャンネルとワーカを作成し並列処理を書いた実装B とどちらが処理は効率的(速さ、リソースの点で)でしょうか?デメリット、メリット知りたいです。
3
- ※サーバのメモリは4Gでコア2つ、検索するデイレくトリ配下のファイルは500以上の想定
3
+ ※サーバのメモリは4Gでコア2つ、検索するデイレくトリ配下のファイルは300以上-1000の想定
4
4
  すみません、消去ロジックのLinuxコマンド(実装A)とgoのパッケージを使う(実装B)差異は観点にいれない無視でお願いします。
5
5
  よろしくお願いします。
6
6
 

2

修正

2024/06/04 13:34

投稿

tex2345rr
tex2345rr

スコア0

test CHANGED
File without changes
test CHANGED
@@ -5,6 +5,8 @@
5
5
  よろしくお願いします。
6
6
 
7
7
  実装A
8
+ ```
9
+
8
10
  // 削除を実行する
9
11
  go func() {
10
12
  cmd := exec.Command("find", mpddir, "-name", "test_*.txt", "-mtime", "+1", "-exec", "rm", "-f", "{}", "\\;")
@@ -19,7 +21,17 @@
19
21
  lg.LTM("execute command-[%s]", cmd.String())
20
22
  }()
21
23
 
24
+
25
+ ```
26
+
27
+
22
28
  実装B 
29
+
30
+
31
+
32
+ ```
33
+
34
+
23
35
  // ファイル削除を並列処理で実行するためのチャネル
24
36
  type fileTask struct {
25
37
  path string
@@ -79,3 +91,5 @@
79
91
  if err := <-errorChan; err != nil {
80
92
  return err
81
93
  }
94
+
95
+ ```

1

誤字

2024/06/04 13:33

投稿

tex2345rr
tex2345rr

スコア0

test CHANGED
File without changes
test CHANGED
@@ -17,11 +17,6 @@
17
17
  lg.LEM("error: %s", stderr.String())
18
18
  }
19
19
  lg.LTM("execute command-[%s]", cmd.String())
20
- // 排他制御ファイルを削除
21
- if err := os.Remove(mpddir + "/.lock"); err != nil {
22
- lg.LW(err, "failed to remove lock file : [%s]", mpddir)
23
- }
24
- lg.LTM("execute remove lock file : [%s]", mpddir+"/.lock")
25
20
  }()
26
21
 
27
22
  実装B