質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

メモリリーク

メモリリークは、プログラムファイルがメモリの解放に失敗した時に起こります。

Q&A

解決済

4回答

1245閲覧

プログラミングでメモリとかCPUのリソースを意識できるようにするには?

退会済みユーザー

退会済みユーザー

総合スコア0

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

CPU

CPUは、コンピュータの中心となる処理装置(プロセッサ)で中央処理装置とも呼ばれています。プログラム演算や数値計算、その他の演算ユニットをコントロール。スマホやPCによって内蔵されているCPUは異なりますが、処理性能が早いほど良いとされています。

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

メモリリーク

メモリリークは、プログラムファイルがメモリの解放に失敗した時に起こります。

0グッド

3クリップ

投稿2020/11/11 14:57

ざっくりとした質問になってしまうのですが、

メモリ管理やCPUなどのリソースを意識したプログラミングをするようにしたいです。
どういう言語でどういうコードを書けば消費量を抑えられたり、効率的な使い方が出来るのか?というのを学びたいと思ってます。

具体的に言うと、大量のログファイルを扱う場合はメモリ管理が効率的・得意な言語を使ってコード書くとか、
メモリの消費量コードがあったとしてそれは言語によるものだとすれば、C言語で書き直し処理を高速化するなど。
その辺の勘所を付けたいと思ってます。

そういったリソース管理を慎重に行う場面にいないので、どういう考えでどの言語を使おうとか、どういう書き方をしようとか検討があまりつきません。

良い学び方があれば、ヒントでも良いので教えていただきたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toast-uz

2020/11/11 15:09

もう少し、目的や背景を説明出来ますか?例えば、組込みしたいのか、クラウドでスケールアウトしたいのかで、同じご質問で全く異なる回答になるかと思います。
yohhoy

2020/11/11 15:11

言わんとすることは(なんとなく)分かるのですが、あまりにふわっとした質問なのであなたが求める回答が集まるかどうかは難しい気がします。 ご自身のスキル(主にどのような分野のプログラムを書いてきたか、使えるプログラミング言語など)や、想定している具体例を質問追記されたほうが良いかと思います。
退会済みユーザー

退会済みユーザー

2020/11/12 02:52

> 具体的に言うと、大量のログファイルを扱う場合はメモリ管理が効率的・得意な言語を使ってコード書くとか、 > メモリの消費量コードがあったとしてそれは言語によるものだとすれば、C言語で書き直し処理を高速化するなど。 > その辺の勘所を付けたいと思ってます。 複数人開発だと、メンバーに学習させるコストや引継ぎ等を考えると複数言語混ぜて使うのはあまり現実的ではないので、基本的に簡単なスクリプトを除けば開発言語は統一することになり、別言語まで使ってチューニングするというは稀で、本当に最後の手段になるかと思います。(全て自分一人で開発・保守するなら問題ないですが)
Zuishin

2020/11/12 14:26

目的自体に疑問があります。リソース使用量は言語よりアルゴリズムで大きく変わります。アルゴリズムをこれ以上工夫できなくなり、更に少しでも消費を減らさなければならないという必要に迫られた時に初めて言語を替えることを検討します。
guest

回答4

0

ベストアンサー

「メモリ管理やCPUなどのリソースを意識したプログラミングをする」のは(主にパフォーマンス改善等のための)手段であって、目的足りえません。

また、そもそも世の中にある全ての言語や全てのケースに通用する方法論なんてものは存在しません。

そしておそらく「メモリ管理やCPUなどのリソース」の部分に問題を抱えているプログラムの改善に実際に取り組んでみない事には、あなたの求める知識や経験は手に入りません。

「学び方」なんてものは人それぞれでしょうけど、「学問に王道なし」という言葉があります。

他の回答にあるように、まず言語やOSの仕組み、ハードウェアの仕組み等の基礎的な知識からインプットしていき、「問題のあるプログラム」を調査して根本原因を突き止め、その問題を解決してみてください。

最初はあなたが今まで出会ったコードを改善するのが最初のステップになると思いますが、あなたのこれまでに書いたコードに改善点が見つからない素晴らしい環境にいるのなら、GitHubで世の中に無数に存在するOSSのパフォーマンス改善への貢献から始めるという手段もあります。

issueで性能改善要求が出ているものは探せば見つかるでしょうから、その言語、そのプロダクトにおける最適な方法を調べ、実践してみましょう。

投稿2020/11/11 16:58

編集2020/11/12 01:32
gentaro

総合スコア8949

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/11/12 11:44

> そしておそらく「メモリ管理やCPUなどのリソース」の部分に問題を抱えているプログラムの改善に実際に取り組んでみない事には、あなたの求める知識や経験は手に入りません こちら見にしみてわかります。現状がそうなので OSSですか、その発想がなかっかたですが良さそうですね。 パフォーマンス改善をしなければならないアプリケーションやツールなどはどのようなものがあるでしょう? ぱっと思いつくのは ・Codepenなどのインタラクティブなエディタ ・ログ解析(ファイル操作なのでメモリ) ・統計や機械学習などで使われる計算(CPU) ・動画配信サービス(ネットワーク帯域やファイル操作) 意識しないといけないリソースはバラバラですが、他に具体例や経験談であれば伺いたいです
gentaro

2020/11/12 13:36

> issueで性能改善要求が出ているものは探せば見つかるでしょうから と書いてあるとおりですし、人力検索サイトじゃないので、まずご自身で調べてください。 あなたのスキルにマッチしていたり、興味のあるシステムが具体的にどういうものなのかは私にはわかりません。
退会済みユーザー

退会済みユーザー

2020/11/12 13:57

経験談だけでもお伺いできませんか?
gentaro

2020/11/12 14:14

あなたのスキルがわからないのでどこから説明すれば通じるのかわかりませんし、1から10まで説明するには分量が多すぎます。 それにネット上の検索すればその手の経験談などいくらでもみつかるはずですので、まず探してください。 自分で探す癖のない人に説明するような無償教師をやるつもりはありません。
退会済みユーザー

退会済みユーザー

2020/11/12 15:22

では、1から10まで説明は結構ですので、 体験談があれば、それをかいつまんでお伺いしたいです。 概要程度で大丈夫です。
gentaro

2020/11/12 23:19

しつこいな。 > ネット上の検索すればその手の経験談などいくらでもみつかるはず と書いてあるとおりなんで、まず自分で探してください。 ハッキリ言わないと伝わらないのであれば言わせてもらうと、わざわざあなたのために文面を考えて説明するのが面倒だし、そもそもこの質問に対する回答の範囲を越えています。 「具体的に何か困っている理由があり、解決したい問題」を示して改めて質問すれば、回答が貰えるんじゃないでしょうか。 https://teratail.com/help/avoid-asking プログラミングに関係のない質問 プログラミングに関して困っていることがないと思われる質問は、トピック外とみなし推奨していません。 開発仲間を募集する目的の投稿、知人同士でのクローズドなディスカッション、人生の悩み相談などがこれに当たると考えています。 具体的に何か困っている理由があり、解決したい問題がある場合は、その理由や何に対して解を得たいのかを明確に記入してください。
退会済みユーザー

退会済みユーザー

2020/11/13 11:50

先のコメントでは、体験談を伺っているので、そちらが経験したことをありのまま言ってもらえれば良いんです。 体験談がないor答えたくないのであればこれ以上の返信コメントは不要です。 > ネット上の検索すればその手の経験談などいくらでもみつかるはず こちらに関してはもちろん調べます。ただそちらの経験談が気になっただけです。
gentaro

2020/11/13 18:55

・どういう教育を受けて育ったら「言ってもらえば良い」などという上から目線の話の言葉が出てくるの? ・最初から断ってるのに何度も言われないと理解できないの?日本語はどれぐらい通じてるの? ・そもそもここで数行で説明できると思ってるの? ・仮にここで数行の言葉で説明したとして、それを聞いて何をしたいの? ・そんな概要すら説明できるかどうか怪しい話を聞いて意味があると思ってるの? ・なんであなたのためにそんな面倒な要求を受け入れないといけないの? 質問したいなら、これらの疑問に対して全て回答してください。 あなたが私に回答を要求する以上はお互い様だし、あなたが「言ってくれれば良い」んで可能なんですよね? その回答に納得ができれば検討ぐらいはします。
退会済みユーザー

退会済みユーザー

2020/11/17 12:28

怒ってるw
guest

0

C言語でプログラミングの勉強をして、実際にコードを書いていきましょう。
身にしみますよ

投稿2020/11/11 15:24

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/11/12 11:33

ご回答ありがとうございます。
guest

0

ソート処理にはいろいろなアルゴリズムがあります。
アルゴリズム毎に、速度、メモリー使用量が大きく異なります。

1000 個程度なら、どの方法でも大差はないでしょう。
1000 万件、数億件をソートするとなると、アルゴリズムだけでなく実装上のいろいろな工夫が必要になるはずです。

ソートの計算量についてはプログラミングの教科書での説明をたくさん見つけることができると思います。

ゲーム (オセロとか) のマシンでの思考ルーチン実装でも、強くしようとおもうと、速度、メモリー使用量とかを意識せずにはいられません。

なにかさらに上を目指そうとすると、資源の効率利用を意識することに直面するはずです。

投稿2020/11/12 22:23

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

・CPUの仕組み
・OSの仕組み
・言語処理系の仕組み
を学べば良いかと思います。

全くゼロからだと1年では厳しい気がしますし、時間を掛ければ誰でも理解できるという物でも無いでしょうね。
まずはOSの仕組みか、言語処理系の仕組みについての本を読んでみて、理解できるようであれば次に進むのが良いと思います。

投稿2020/11/11 15:25

otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2020/11/12 11:36

そうですねOSの仕組みやファイルシステムなど低レイヤーを実際のコード書いたり、書籍探ってみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問