https://www.yumemi.co.jp/serverside_recruit
上記の問題の解説記事を読んでわからなかったことを質問させていただきたいです。
https://qiita.com/yuu1111main/items/4776fec53fcdfad3a013
の記事において
辞書にすべてのデータに入れるのではなく
クラスのインスタンスに1レコードの値を保持することでメモリ使用量をへらすことができたと述べています。
どうしてそれがいえるのでしょうか?
けっかとして、使用するメモリの使用量は変わらないのでは?と思いました。
こちらの記事から質問に関係するコードを抜粋しました。
class Player: """ プレイヤー型。 省メモリを実現するために、辞書と併用して利用することを想定してプレイヤーIDは保持していません。 """ _game_count: int = 0 # プレイしたゲームの数 _sum_score: int = 0 # 合計スコア def getAverage(self) -> int: """ プレイヤーの平均スコアを計算します。 :return: 四捨五入された平均スコアです。 """ if self._game_count == 0: # 0除算対策 return 0 # 平均を返す return round(self._sum_score / self._game_count) def addResult(self, score: int): """ ゲームの結果を追加します。 :param score: 加算するスコア """ # ゲームのカウント値とスコアを変動させる。 self._game_count += 1 self._sum_score += score def main(): # コマンドライン引数の読み取り args = get_option() file_name = str(args.fileName) # CSVを読み込む(エラーがあれば出力する。) error = True records: Dict[str, Player] = {} try: records = readCsv(file_name) except FileNotFoundError: print(f'"{file_name}"というファイルは見つかりませんでした。', file=sys.stderr) except IsADirectoryError: print('ディレクトリが指定されています', file=sys.stderr) except PermissionError as e: print('権限がありません\n', e, file=sys.stderr) except ValueError as e: print('CSVの値に想定外のものがありました\n', e, file=sys.stderr) except Exception as e: print('CSVの読み込みに失敗しました\n', e, file=sys.stderr) else: error = False if error: # エラーがあったのであればプログラムを終了する。 sys.exit(1)
どうぞよろしくお願い致します
回答2件
あなたの回答
tips
プレビュー