summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKunoiSayami <[email protected]>2023-06-18 16:14:36 +0800
committerKunoiSayami <[email protected]>2023-06-18 16:14:36 +0800
commitae4d500ba62b9f1de4c5189139eb91d5a8807592 (patch)
tree86031051629438db8489f3ee1677a1d77a9bf03f
parentf6a970fa86d6474e4f45055f41eb80bdac4ee756 (diff)
feat(exp): Add more function in analysis0617
Signed-off-by: KunoiSayami <[email protected]>
-rwxr-xr-xanalysis0617.py42
1 files changed, 37 insertions, 5 deletions
diff --git a/analysis0617.py b/analysis0617.py
index 3e62482..58356f8 100755
--- a/analysis0617.py
+++ b/analysis0617.py
@@ -1,5 +1,6 @@
#!/usr/bin/env python
import argparse
+import ast
import asyncio
import random
@@ -32,6 +33,28 @@ def grab_limit(limit: str) -> tuple[int, int]:
return 10, int(limit)
+def get_list_average(array: list[float]) -> float:
+ return int(sum(array) / len(array) * 1000000) / 1000000
+
+
+def analysis(data: dict[int, dict[int, dict[str, list[float]]]]) -> dict[int, dict[int, dict[str, float]]]:
+ new_dict = {}
+ for key, value in data.items():
+ new_dict.update({key: {}})
+ for key2, value2 in value.items():
+ new_dict[key].update(
+ {key2: {'normal': get_list_average(value2['normal']), 'custom': get_list_average(value2['custom'])}})
+ return new_dict
+
+
+def print_excel(data: dict[int, dict[int, dict[str, list[float]]]]) -> None:
+ result = analysis(data)
+ print('sample', 'search', 'normal', 'custom', sep=',')
+ for key, value in result.items():
+ for key2, value2 in value.items():
+ print(key, key2, value2['normal'], value2['custom'], sep=',')
+
+
async def main(matches: argparse.Namespace) -> None:
def pow2(n: int) -> int:
return 2 ** n
@@ -71,13 +94,22 @@ async def main(matches: argparse.Namespace) -> None:
result[sample][search]['custom'].append(custom)
print(fault_run, '/', total_run)
print(result)
+ print(analysis(result))
if __name__ == '__main__':
arg_ = argparse.ArgumentParser()
- arg_.add_argument("exec1")
- arg_.add_argument("exec2")
- arg_.add_argument("sample_limit")
- arg_.add_argument("limit")
+ sub_ = arg_.add_subparsers(title='sub', dest='sub')
+ run_ = sub_.add_parser('run')
+ sub_.add_parser('excel')
+ run_.add_argument("exec1")
+ run_.add_argument("exec2")
+ run_.add_argument("sample_limit")
+ run_.add_argument("limit")
parser_ = arg_.parse_args()
- asyncio.run(main(parser_))
+ if parser_.sub == 'run':
+ asyncio.run(main(parser_))
+ elif parser_.sub == 'excel':
+ print_excel(ast.literal_eval(input()))
+ else:
+ print(analysis(ast.literal_eval(input())))