Hello hackers !
Qiitaは、エンジニアリングに関する知識を記録・共有するためのサービスです。
コードを書いていて気づいたことや、自分がハマったあの仕様について、
他のエンジニアと知見を共有しましょう ;)
https://qiita.com/
Qiita(キータ)は、Incrementsが運営するプログラミング情報のナレッジコミュニティ。
2016年現在で日本最大のプログラマーコミュニティとされている[1]。
https://internet.watch.impress.co.jp/docs/news/1025972.html
前スレ Qiita
https://mevius.5ch.net/test/read.cgi/tech/1542357242/
Qiita 2 - キータぞ、来たぞ、キータだぞー
■ このスレッドは過去ログ倉庫に格納されています
2022/07/26(火) 00:20:10.32ID:XQj8UtG3
771デフォルトの名無しさん
2023/02/26(日) 22:40:43.27ID:qHcJFulr コメント連投してる人は暇人だなぁと思うけど
これはいい暇人やろ
こういうふうなコメントこそ求められてると思うけど
これはいい暇人やろ
こういうふうなコメントこそ求められてると思うけど
772デフォルトの名無しさん
2023/03/06(月) 19:42:47.48ID:r0tCpgvu 質問への回答へChatGPTの応答を丸投げする人がいます #443
前回のような個別に対応しますというような曖昧な回答ではなく,是非運営として対応方針をお聞かせ願えればと思います.
前回のような個別に対応しますというような曖昧な回答ではなく,是非運営として対応方針をお聞かせ願えればと思います.
773デフォルトの名無しさん
2023/03/08(水) 23:58:04.56ID:4eHYlrtD もう匿名式の質問サイトはダメだな
774デフォルトの名無しさん
2023/03/14(火) 22:18:59.44ID:8y8SbB+t 小道具:英数の別文字コードへの変換(テキストデータなのにボールドとかイタリックとかスクリプト体とか…)
https://qiita.com/ikiuo/items/4359dd27149253cf577b
Qiitaのコメント欄はいつもこれくらいピリピリした感じがあれば良いのに。
https://qiita.com/ikiuo/items/4359dd27149253cf577b
Qiitaのコメント欄はいつもこれくらいピリピリした感じがあれば良いのに。
775デフォルトの名無しさん
2023/03/15(水) 07:34:30.82ID:S/2xoj/O マシン語がどうとか言ってるが線形探索はマシン語になっても線形探索だから辞書の方が速いんだよなあ
776デフォルトの名無しさん
2023/03/15(水) 10:39:46.92ID:pH/GSRp9 「CPU のレジスタ内で完結するコード」とか今まで考えたことすらなかった
そこまで速度にこだわる必要はないでしょ
そこまで速度にこだわる必要はないでしょ
777デフォルトの名無しさん
2023/03/15(水) 12:26:39.43ID:jerUT3o2 実測しないでどっちが速いとか迂闊なこと言えん
778デフォルトの名無しさん
2023/03/15(水) 12:41:05.39ID:S/2xoj/O779デフォルトの名無しさん
2023/03/15(水) 12:55:47.78ID:jerUT3o2 いまどきのコンパイラは勝手にベクトル化したりするしどういうコード吐くかは見ないとわからん。
ソース見ただけで計算量なんて分かるわけない。
ソース見ただけで計算量なんて分かるわけない。
780デフォルトの名無しさん
2023/03/15(水) 13:17:37.66ID:aPY7VYJu ソース見ただけでわからんとかどういうことだよ
計算量はソースからはかるもんだぞ
計算量はソースからはかるもんだぞ
781デフォルトの名無しさん
2023/03/15(水) 13:20:40.00ID:aPY7VYJu どんだけ頑張って最適化しても大量のデータでは挿入ソートは最適化しないヒープソートに勝つことはない
むしろ無駄ループ入れて1000倍の時間がかかるようにしたヒープソートにすら負ける
これが計算量よ
むしろ無駄ループ入れて1000倍の時間がかかるようにしたヒープソートにすら負ける
これが計算量よ
782デフォルトの名無しさん
2023/03/15(水) 13:44:10.45ID:JMNcqHlR 「計算量」と「実効速度」の違いがわからない人って
783デフォルトの名無しさん
2023/03/15(水) 20:35:53.94ID:KXZ51f7E >>778
異なる方法を計算量で比較できると思ってる人?
異なる方法を計算量で比較できると思ってる人?
784デフォルトの名無しさん
2023/03/15(水) 21:04:27.21ID:S/2xoj/O >>783
そのためにある指標だし
そのためにある指標だし
785デフォルトの名無しさん
2023/03/15(水) 21:29:10.82ID:h4FnK3FU 三度もレスしてて物知らないってw
786デフォルトの名無しさん
2023/03/15(水) 21:32:21.48ID:S/2xoj/O マジで計算量知らないこの板にやついるんだなって
基礎だぞ?
基礎だぞ?
787デフォルトの名無しさん
2023/03/15(水) 21:42:36.28ID:L/tI8VDO 数十文字程度の小規模データの探索の話でしょこれ
788デフォルトの名無しさん
2023/03/15(水) 22:01:25.50ID:S/2xoj/O 文書の大きさがどの程度になるかわからんだろw
逆に小さい文書しか作らないなら速度などどうでもいいっつー話w
逆に小さい文書しか作らないなら速度などどうでもいいっつー話w
789デフォルトの名無しさん
2023/03/15(水) 22:11:47.12ID:L/tI8VDO 文書の長さこそ計算量上はただの係数やろ
そうなると一文字単位の計算量じゃなく処理時間が影響するやろ
そうなると一文字単位の計算量じゃなく処理時間が影響するやろ
790デフォルトの名無しさん
2023/03/15(水) 22:30:39.09ID:CY/tziyM 質問の検索機能についてお聞かせください #450
上記のような問題を解決したいと考え、質問を検索できるようにする予定です
みなさまにお聞かせいただきたい内容
1. どのような項目で検索を絞り込みたいですか?
2. 上記の抽出条件は、主にどんな時に必要かを教えてください
上記のような問題を解決したいと考え、質問を検索できるようにする予定です
みなさまにお聞かせいただきたい内容
1. どのような項目で検索を絞り込みたいですか?
2. 上記の抽出条件は、主にどんな時に必要かを教えてください
791デフォルトの名無しさん
2023/03/15(水) 22:34:40.04ID:eoB9Ihb9792デフォルトの名無しさん
2023/03/15(水) 22:52:06.71ID:OgurmkNo 間違い指摘されたのを「荒らされた」と逆恨みしてる人かな
793デフォルトの名無しさん
2023/03/16(木) 08:14:42.42ID:coFKYGG/ >>789
文書の長さをnとした時にnの増加でどのくらい時間が増えるかを表すのが計算量だぞw
O(n)なら文書量が1000倍の時に1000倍の時間がかかるしO(n^2)なら1000000倍の時間がかかる
だからアルゴリズムをO(n^2)のままで速さを2倍にチューンナップしても500000倍の時間になるから1000倍の時間には全然文字通り桁違いにかなわんのよw
文書の長さをnとした時にnの増加でどのくらい時間が増えるかを表すのが計算量だぞw
O(n)なら文書量が1000倍の時に1000倍の時間がかかるしO(n^2)なら1000000倍の時間がかかる
だからアルゴリズムをO(n^2)のままで速さを2倍にチューンナップしても500000倍の時間になるから1000倍の時間には全然文字通り桁違いにかなわんのよw
794デフォルトの名無しさん
2023/03/16(木) 08:17:01.38ID:coFKYGG/795デフォルトの名無しさん
2023/03/16(木) 08:28:26.08ID:J6jDYyo3 >>793
いや一文字の変換方法の議論なんだからO(n)じゃなくてn×O(テーブル数)なんだよ
いや一文字の変換方法の議論なんだからO(n)じゃなくてn×O(テーブル数)なんだよ
796デフォルトの名無しさん
2023/03/16(木) 08:57:56.89ID:coFKYGG/797デフォルトの名無しさん
2023/03/16(木) 09:03:39.04ID:coFKYGG/ 辞書なら一回の変換でO(1)だから文書をnとしてO(n)なのにそこで線形探索持ってきて機械語を考慮して云々言うのがどれだけアホなのかわからんのかよw
そんなの一発で消し飛ぶのは実測しなくてもわかるわw
そんなの一発で消し飛ぶのは実測しなくてもわかるわw
798795
2023/03/16(木) 10:08:11.84ID:oia5IsuT n✕O(1)とn✕O(テーブル数)やろ
どの変換処理だろうが文字数nでループして内部変換処理にnは関わってない
どの変換処理だろうが文字数nでループして内部変換処理にnは関わってない
799デフォルトの名無しさん
2023/03/16(木) 12:06:57.05ID:coFKYGG/ 結局必要なのは個々の変換速度じゃなく最終的な速度だと何度説明してもわからんアホには何も作れんよ
800795
2023/03/16(木) 12:15:09.02ID:nUks2Duv 結論に異論はないが説明が間違ってりゃそりゃ伝わらんよ
801デフォルトの名無しさん
2023/03/16(木) 12:21:16.93ID:coFKYGG/ 間違ってるように見えるのはお前がアホだからだよ
トンチンカンなことばかり言ってるからわかる
トンチンカンなことばかり言ってるからわかる
802デフォルトの名無しさん
2023/03/16(木) 12:44:45.67ID:d8Ckr3uM >>774
異字体てなに
異字体てなに
803デフォルトの名無しさん
2023/03/16(木) 13:17:41.07ID:5yhRoe8q アホっていうやつがアホ
マジでアホ
どうしようもなくアホ
雑談する目的で誹謗中傷するのは精神がいかれてる
小学生の義務教育からリカレント教育を受け直すべき
誹謗中傷せずに話せないの?
くだらない話題にしか見えない
この話題には当然参加してない
マジでアホ
どうしようもなくアホ
雑談する目的で誹謗中傷するのは精神がいかれてる
小学生の義務教育からリカレント教育を受け直すべき
誹謗中傷せずに話せないの?
くだらない話題にしか見えない
この話題には当然参加してない
804デフォルトの名無しさん
2023/03/16(木) 13:20:30.56ID:k5zGeUtM これで自分は誹謗中傷してないつもりなのがアホだろ?w
805デフォルトの名無しさん
2023/03/17(金) 00:05:29.98ID:aeVIJ/KU 今年のカレンダーで25記事書ききってぬいぐるみとTシャツもらうためにいまから書きだめておこうと思うんだが(´・ω・`)
806デフォルトの名無しさん
2023/03/17(金) 14:38:47.90ID:2zEmq53G そのぬいぐるみは必要なんですか
807デフォルトの名無しさん
2023/03/21(火) 08:51:57.85ID:C5sD27fs ChatGPTばっかりやな
808デフォルトの名無しさん
2023/03/21(火) 09:55:36.79ID:Tpygyrgn 今そういうキャンペーンしてるしホームに並ぶ記事には運営が恣意的な重みをつけてるからな
809デフォルトの名無しさん
2023/03/21(火) 15:54:59.44ID:vHVc4/ZP セカイを変えるChatGPTを追求せよという空気でChatGPT以外の記事を書ける?
おまえは空気を読めないやつかもしれんが
おまえは空気を読めないやつかもしれんが
810デフォルトの名無しさん
2023/03/21(火) 17:23:05.79ID:GtV9DAzh 現状ちょっと弄っただけで糞とわかるChatGPTの記事なんて書く意味ない
811デフォルトの名無しさん
2023/03/22(水) 12:50:34.89ID:2yBOIXco 現状、正しいコードを書かせるためにプロントを四苦八苦してるうちに自分でコード書いたほうが早いからな…
812デフォルトの名無しさん
2023/03/25(土) 05:45:02.74ID:g6eb42ch 元編 https://qiita.com/kankikou/items/311328b36ff5a60ab19a
続編 https://qiita.com/Nabetani/items/4827584857cb1c584647
高々10Mの足し算で1秒掛かってるのが異常に遅いなと思って
試しに手動アンロールしたら3桁早くなった
主題の分岐予測を気にかけてる人は自動ベクトル化も興味あるだろうし
元編でコメント連投してた藤田望氏は5chで叩かれてもQiita頑張って欲しい
shuffled
simple: duration= 1.4129s sum=957487744000
simple_unroll4: duration= 0.0016s sum=957487744000
foreach: duration= 1.4307s sum=957487744000
opt-simple: duration= 1.4238s sum=957487744000
opt-foreach: duration= 1.4369s sum=957487744000
sorted
simple: duration= 1.4214s sum=957487744000
simple_unroll4: duration= 0.0016s sum=957487744000
foreach: duration= 1.4228s sum=957487744000
opt-simple: duration= 1.4297s sum=957487744000
opt-foreach: duration= 1.4318s sum=957487744000
続編 https://qiita.com/Nabetani/items/4827584857cb1c584647
高々10Mの足し算で1秒掛かってるのが異常に遅いなと思って
試しに手動アンロールしたら3桁早くなった
主題の分岐予測を気にかけてる人は自動ベクトル化も興味あるだろうし
元編でコメント連投してた藤田望氏は5chで叩かれてもQiita頑張って欲しい
shuffled
simple: duration= 1.4129s sum=957487744000
simple_unroll4: duration= 0.0016s sum=957487744000
foreach: duration= 1.4307s sum=957487744000
opt-simple: duration= 1.4238s sum=957487744000
opt-foreach: duration= 1.4369s sum=957487744000
sorted
simple: duration= 1.4214s sum=957487744000
simple_unroll4: duration= 0.0016s sum=957487744000
foreach: duration= 1.4228s sum=957487744000
opt-simple: duration= 1.4297s sum=957487744000
opt-foreach: duration= 1.4318s sum=957487744000
813812
2023/03/25(土) 06:46:24.02ID:kHu8aUGB 失礼、measure関数で1000回ループしてたので、高々10G回の足し算になってた
でもO3最適化が何かをやっているようだ
g++ -O2 -mavx2
shuffled
simple: duration= 4.3088s sum=957487744000
simple_unroll4: duration= 1.5359s sum=957487744000
foreach: duration= 4.3084s sum=957487744000
opt-simple: duration= 4.7163s sum=957487744000
opt-foreach: duration= 5.5201s sum=957487744000
g++ -O3 -mavx2
shuffled
simple: duration= 1.4113s sum=957487744000
simple_unroll4: duration= 0.0016s sum=957487744000
foreach: duration= 1.4264s sum=957487744000
opt-simple: duration= 1.4410s sum=957487744000
opt-foreach: duration= 1.4378s sum=957487744000
int64_t __attribute__ ((noinline)) simple_unroll4(std::vector<uint> const &data)
{
int64_t sum[4]{};
for (size_t i = 0, size = data.size(); i < size; i+=4)
{
if (128 <= data[i+0]) sum[0] += data[i+0];
if (128 <= data[i+1]) sum[1] += data[i+1];
if (128 <= data[i+2]) sum[2] += data[i+2];
if (128 <= data[i+3]) sum[3] += data[i+3];
}
return sum[0]+sum[1]+sum[2]+sum[3];
}
でもO3最適化が何かをやっているようだ
g++ -O2 -mavx2
shuffled
simple: duration= 4.3088s sum=957487744000
simple_unroll4: duration= 1.5359s sum=957487744000
foreach: duration= 4.3084s sum=957487744000
opt-simple: duration= 4.7163s sum=957487744000
opt-foreach: duration= 5.5201s sum=957487744000
g++ -O3 -mavx2
shuffled
simple: duration= 1.4113s sum=957487744000
simple_unroll4: duration= 0.0016s sum=957487744000
foreach: duration= 1.4264s sum=957487744000
opt-simple: duration= 1.4410s sum=957487744000
opt-foreach: duration= 1.4378s sum=957487744000
int64_t __attribute__ ((noinline)) simple_unroll4(std::vector<uint> const &data)
{
int64_t sum[4]{};
for (size_t i = 0, size = data.size(); i < size; i+=4)
{
if (128 <= data[i+0]) sum[0] += data[i+0];
if (128 <= data[i+1]) sum[1] += data[i+1];
if (128 <= data[i+2]) sum[2] += data[i+2];
if (128 <= data[i+3]) sum[3] += data[i+3];
}
return sum[0]+sum[1]+sum[2]+sum[3];
}
814812
2023/03/25(土) 06:53:15.92ID:kHu8aUGB measure関数に __attribute__ ((noinline)) を付けたら正しく動きました
失礼しました
失礼しました
815812
2023/03/25(土) 17:13:39.86ID:hUI94gGa uint16_tにしたら続編のAVX512と似通ったレベルが出た(続編のsumがmacとwindowsで違うのは何故?)
g++ -O3 (avx2を明示しない方が速かった)
shuffled
simple: duration= 1.0470s sum=957487744000
simple_unroll4: duration= 0.7678s sum=957487744000 ★
foreach: duration= 1.0765s sum=957487744000
opt-simple: duration= 1.3134s sum=957487744000
opt-foreach: duration= 1.3262s sum=957487744000
sorted
simple: duration= 1.0430s sum=957487744000
simple_unroll4: duration= 0.7652s sum=957487744000 ★
foreach: duration= 1.0726s sum=957487744000
opt-simple: duration= 1.3084s sum=957487744000
opt-foreach: duration= 1.3201s sum=957487744000
clang++ -O3 -mavx2 (avx2を明示)
shuffled
simple: duration= 0.8695s sum=957487744000
simple_unroll4: duration= 1.3842s sum=957487744000
foreach: duration= 0.8715s sum=957487744000
opt-simple: duration= 0.8683s sum=957487744000
opt-foreach: duration= 0.8636s sum=957487744000 ★
sorted
simple: duration= 0.8812s sum=957487744000
simple_unroll4: duration= 1.3900s sum=957487744000
foreach: duration= 0.8701s sum=957487744000
opt-simple: duration= 0.8691s sum=957487744000
opt-foreach: duration= 0.8682s sum=957487744000 ★
g++ -O3 (avx2を明示しない方が速かった)
shuffled
simple: duration= 1.0470s sum=957487744000
simple_unroll4: duration= 0.7678s sum=957487744000 ★
foreach: duration= 1.0765s sum=957487744000
opt-simple: duration= 1.3134s sum=957487744000
opt-foreach: duration= 1.3262s sum=957487744000
sorted
simple: duration= 1.0430s sum=957487744000
simple_unroll4: duration= 0.7652s sum=957487744000 ★
foreach: duration= 1.0726s sum=957487744000
opt-simple: duration= 1.3084s sum=957487744000
opt-foreach: duration= 1.3201s sum=957487744000
clang++ -O3 -mavx2 (avx2を明示)
shuffled
simple: duration= 0.8695s sum=957487744000
simple_unroll4: duration= 1.3842s sum=957487744000
foreach: duration= 0.8715s sum=957487744000
opt-simple: duration= 0.8683s sum=957487744000
opt-foreach: duration= 0.8636s sum=957487744000 ★
sorted
simple: duration= 0.8812s sum=957487744000
simple_unroll4: duration= 1.3900s sum=957487744000
foreach: duration= 0.8701s sum=957487744000
opt-simple: duration= 0.8691s sum=957487744000
opt-foreach: duration= 0.8682s sum=957487744000 ★
816812
2023/03/25(土) 17:24:06.36ID:hUI94gGa 合わせて手動アンロールも少し修正
int64_t __attribute__ ((noinline)) simple_unroll4(std::vector<uint> const &data)
{
int64_t sum = 0;
size_t const size = data.size();
size_t i = 0;
size_t const overflow_safe_chunk_size = (1ULL<< (8*sizeof(uint)))/(1ULL<<8); // 0xff = (1<<8)-1
for(size_t ichunk = 0; ichunk < size ; ichunk += overflow_safe_chunk_size){
uint sub[4]{};
for ( ; i < ichunk; i+=4)
{
if (128 <= data[i+0]) sub[0] += data[i+0];
if (128 <= data[i+1]) sub[1] += data[i+1];
if (128 <= data[i+2]) sub[2] += data[i+2];
if (128 <= data[i+3]) sub[3] += data[i+3];
}
sum += sub[0]+sub[1]+sub[2]+sub[3];
}
for ( ; i < size; i+=1)
{
if (128 <= data[i]) sum += data[i];
}
return sum;
}
gccとclangでかなりの違いが出てるのでSIMD intrinsicsで書くべきなんだろうけど
そこまでするとM1/M2で使えなくなるのでこの辺が落としどころ?
int64_t __attribute__ ((noinline)) simple_unroll4(std::vector<uint> const &data)
{
int64_t sum = 0;
size_t const size = data.size();
size_t i = 0;
size_t const overflow_safe_chunk_size = (1ULL<< (8*sizeof(uint)))/(1ULL<<8); // 0xff = (1<<8)-1
for(size_t ichunk = 0; ichunk < size ; ichunk += overflow_safe_chunk_size){
uint sub[4]{};
for ( ; i < ichunk; i+=4)
{
if (128 <= data[i+0]) sub[0] += data[i+0];
if (128 <= data[i+1]) sub[1] += data[i+1];
if (128 <= data[i+2]) sub[2] += data[i+2];
if (128 <= data[i+3]) sub[3] += data[i+3];
}
sum += sub[0]+sub[1]+sub[2]+sub[3];
}
for ( ; i < size; i+=1)
{
if (128 <= data[i]) sum += data[i];
}
return sum;
}
gccとclangでかなりの違いが出てるのでSIMD intrinsicsで書くべきなんだろうけど
そこまでするとM1/M2で使えなくなるのでこの辺が落としどころ?
817デフォルトの名無しさん
2023/03/26(日) 11:02:32.91ID:4Q+hammq818デフォルトの名無しさん
2023/03/26(日) 15:18:31.53ID:76I76+n1 こいつQiitaのコメントで暴れまくってる藤田望だろ
819デフォルトの名無しさん
2023/03/26(日) 15:52:08.11ID:8M1XC4pp 本人じゃないよ
https://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html
で更に早くなった
g++ -O4 -mavx2
shuffled
simple: duration= 1.4165s sum=957487744000
simple_unroll4: duration= 0.9939s sum=957487744000
simple_vec16: duration= 0.5607s sum=957487744000
simple_vec32: duration= 0.2914s sum=957487744000 ★
sorted
simple: duration= 1.3956s sum=957487744000
simple_unroll4: duration= 0.9907s sum=957487744000
simple_vec16: duration= 0.5611s sum=957487744000
simple_vec32: duration= 0.2766s sum=957487744000 ★
clang++ -O3 -mavx2
shuffled
simple: duration= 0.8921s sum=957487744000
simple_unroll4: duration= 1.3960s sum=957487744000
simple_vec16: duration= 0.3113s sum=957487744000
simple_vec32: duration= 0.2184s sum=957487744000 ★
sorted
simple: duration= 0.8977s sum=957487744000
simple_unroll4: duration= 1.3983s sum=957487744000
simple_vec16: duration= 0.3328s sum=957487744000
simple_vec32: duration= 0.2028s sum=957487744000 ★
https://gcc.gnu.org/onlinedocs/gcc/Vector-Extensions.html
で更に早くなった
g++ -O4 -mavx2
shuffled
simple: duration= 1.4165s sum=957487744000
simple_unroll4: duration= 0.9939s sum=957487744000
simple_vec16: duration= 0.5607s sum=957487744000
simple_vec32: duration= 0.2914s sum=957487744000 ★
sorted
simple: duration= 1.3956s sum=957487744000
simple_unroll4: duration= 0.9907s sum=957487744000
simple_vec16: duration= 0.5611s sum=957487744000
simple_vec32: duration= 0.2766s sum=957487744000 ★
clang++ -O3 -mavx2
shuffled
simple: duration= 0.8921s sum=957487744000
simple_unroll4: duration= 1.3960s sum=957487744000
simple_vec16: duration= 0.3113s sum=957487744000
simple_vec32: duration= 0.2184s sum=957487744000 ★
sorted
simple: duration= 0.8977s sum=957487744000
simple_unroll4: duration= 1.3983s sum=957487744000
simple_vec16: duration= 0.3328s sum=957487744000
simple_vec32: duration= 0.2028s sum=957487744000 ★
820デフォルトの名無しさん
2023/03/26(日) 16:12:14.93ID:8M1XC4pp typedef uint v32 __attribute__ ((vector_size (32)));
int64_t __attribute__ ((noinline)) simple_vec32(std::vector<uint> const &data)
{
int64_t sum = 0;
size_t const size = data.size();
size_t const overflow_safe_chunk_size = (1ULL<< (8*sizeof(uint)))/(1ULL<<8); // 0xff = (1<<8)-1
size_t const unroll_step = sizeof(v32)/sizeof(uint);
v32 const *pv32 = (v32 const*)data.data();
size_t const size32 = size/unroll_step;
size_t i = 0;
for(size_t ichunk = overflow_safe_chunk_size ; ichunk < size32 ; ichunk += overflow_safe_chunk_size)
{
v32 sub{};
for ( ; i < ichunk; ++i) sub = (128 <= pv32[i]) ? (sub + pv32[i]) : sub;
for(int d = 0; d < unroll_step ; ++d) sum += sub[d];
}
for ( size_t j = i*unroll_step; j < size; ++j) if (128 <= data[j]) sum += data[j];
return sum;
}
simple_vec16は32->16
>(続編のsumがmacとwindowsで違うのは何故?)
記事にないけどgithubのrun.batを見たらサイズが10Mではなく1Mでの数字になってた
なので"C++ on Thinkpad"の実行時間は10倍する必要がある
AVX512とあったので新し目のマシンだと私が勘違いしただけ
肝心のvector extensionは
https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html
この辺見てるとM1/M2でも動きそうな期待が...
int64_t __attribute__ ((noinline)) simple_vec32(std::vector<uint> const &data)
{
int64_t sum = 0;
size_t const size = data.size();
size_t const overflow_safe_chunk_size = (1ULL<< (8*sizeof(uint)))/(1ULL<<8); // 0xff = (1<<8)-1
size_t const unroll_step = sizeof(v32)/sizeof(uint);
v32 const *pv32 = (v32 const*)data.data();
size_t const size32 = size/unroll_step;
size_t i = 0;
for(size_t ichunk = overflow_safe_chunk_size ; ichunk < size32 ; ichunk += overflow_safe_chunk_size)
{
v32 sub{};
for ( ; i < ichunk; ++i) sub = (128 <= pv32[i]) ? (sub + pv32[i]) : sub;
for(int d = 0; d < unroll_step ; ++d) sum += sub[d];
}
for ( size_t j = i*unroll_step; j < size; ++j) if (128 <= data[j]) sum += data[j];
return sum;
}
simple_vec16は32->16
>(続編のsumがmacとwindowsで違うのは何故?)
記事にないけどgithubのrun.batを見たらサイズが10Mではなく1Mでの数字になってた
なので"C++ on Thinkpad"の実行時間は10倍する必要がある
AVX512とあったので新し目のマシンだと私が勘違いしただけ
肝心のvector extensionは
https://gcc.gnu.org/onlinedocs/gcc/AArch64-Options.html
この辺見てるとM1/M2でも動きそうな期待が...
821デフォルトの名無しさん
2023/03/27(月) 12:46:47.87ID:XkUggZJB Qittaでなく5chでやる意味がマジ解らん
822デフォルトの名無しさん
2023/03/28(火) 13:06:07.71ID:cPoQHK67 いや?俺はよく分かる
誰も求めてないのに書くのは同じ
違うのは場所がキータかここかの違い
彼らにとって大事なのは承認欲求?でありほかの何でもない
誰も求めてないのに書くのは同じ
違うのは場所がキータかここかの違い
彼らにとって大事なのは承認欲求?でありほかの何でもない
823デフォルトの名無しさん
2023/03/28(火) 13:49:42.95ID:3VIBVyjk うぜーから出ていけ、っていう話だよ
分かったなら出ていってくんないかな
分かったなら出ていってくんないかな
824デフォルトの名無しさん
2023/03/30(木) 20:44:08.18ID:fTJXckXZ825デフォルトの名無しさん
2023/03/30(木) 21:06:08.35ID:KjCiHOso826デフォルトの名無しさん
2023/03/30(木) 21:20:53.69ID:e87SyOqr どう考えてもスパムだろw
827デフォルトの名無しさん
2023/03/30(木) 23:33:42.71ID:sAgkV5No うるせー馬鹿
828デフォルトの名無しさん
2023/03/31(金) 16:25:54.02ID:ncUugaX3 botによるコメントは普通に考えて迷惑行為
829デフォルトの名無しさん
2023/03/31(金) 21:43:44.84ID:8CJLc1yu CNNをライブラリなしで0から作成してみた(C言語、Convolutional Neural Network)
https://qiita.com/Mizuiro__sakura/items/9634bcd0f163084d402a
あれ?既視感?とおもってぐぐってみたら
https://webcache.googleusercontent.com/search?q=cache:LRitXa4fOIYJ:https://qiita.com/Mizuiro__sakura/items/9cff0ad16da90f89cebe
同じ人による再投稿か。期待した反応がなかったからか知らんがクソ記事繰り返し読まされてしまうと迷惑なのでやめて欲しいな。何よりアイコン画像がキモい。
https://qiita.com/Mizuiro__sakura/items/9634bcd0f163084d402a
あれ?既視感?とおもってぐぐってみたら
https://webcache.googleusercontent.com/search?q=cache:LRitXa4fOIYJ:https://qiita.com/Mizuiro__sakura/items/9cff0ad16da90f89cebe
同じ人による再投稿か。期待した反応がなかったからか知らんがクソ記事繰り返し読まされてしまうと迷惑なのでやめて欲しいな。何よりアイコン画像がキモい。
830デフォルトの名無しさん
2023/03/31(金) 22:16:10.17ID:tr7cKY8h キータの本質はクソ記事なので
それをやめることはできない
それをやめることはできない
831デフォルトの名無しさん
2023/03/31(金) 22:32:45.07ID:aJ3/u9D0 ヨソからの引用だらけの記事のくせに承認欲求だけは人一倍ある感じがなんだかな
件数減らして正解率上がったって言ってるけどアホじゃなかろうか
件数減らして正解率上がったって言ってるけどアホじゃなかろうか
832デフォルトの名無しさん
2023/04/02(日) 13:45:48.58ID:Ky8sq4kq >>829
まじめに読んでる人がいたことに驚き
まじめに読んでる人がいたことに驚き
833デフォルトの名無しさん
2023/04/03(月) 03:02:51.33ID:V0D5Q5Pa AIロボットによるコメントは禁止・無条件削除すべきです #457
最近、あるアカウントで、見境なく、「コメント」と「いいね」を付けまくっているユーザーが居ます
://github.com/increments/qiita-discussions/discussions/457
@Qiita_chan botはご遠慮ください
://qiita.com/EndOfData/items/9f82d4e46540504e5fc6
最近、あるアカウントで、見境なく、「コメント」と「いいね」を付けまくっているユーザーが居ます
://github.com/increments/qiita-discussions/discussions/457
@Qiita_chan botはご遠慮ください
://qiita.com/EndOfData/items/9f82d4e46540504e5fc6
834デフォルトの名無しさん
2023/04/04(火) 08:09:17.95ID:erD0CuRV835デフォルトの名無しさん
2023/04/04(火) 09:42:05.37ID:ktWoV7jH キータとsejukuが無くなって
「調べてみまました いかがだったでしょうか」系サイトが全部無くなって
ぐぐり結果に平和が訪れたときこそ本当の勝利
「調べてみまました いかがだったでしょうか」系サイトが全部無くなって
ぐぐり結果に平和が訪れたときこそ本当の勝利
836デフォルトの名無しさん
2023/04/04(火) 09:48:09.58ID:c9lb0JIW 【Ruby】String#[]= について「すごい」と思ったので、予想を混ぜつつ調べた過程をまとめた - Qiita
https://qiita.com/yuki82511988/items/45a6adcb677f7bddc19f
何がすごいのか理解するまで3分かかった(白目)
https://qiita.com/yuki82511988/items/45a6adcb677f7bddc19f
何がすごいのか理解するまで3分かかった(白目)
837デフォルトの名無しさん
2023/04/04(火) 09:49:09.86ID:c9lb0JIW >文字列も配列のように添字を指定することで、該当する文字を得ることができる
アッハイ
としか言いようがねえぞ
アッハイ
としか言いようがねえぞ
838デフォルトの名無しさん
2023/04/04(火) 09:51:59.35ID:cu0WQi3X839デフォルトの名無しさん
2023/04/04(火) 09:56:40.38ID:c9lb0JIW 文字列に[]でアクセスできるのがすごいと思ってるのが少数はいるというのが分かったことが今日の収穫でした(小波
840デフォルトの名無しさん
2023/04/04(火) 10:09:00.95ID:erD0CuRV アッハイと言いたいだけだろw
841デフォルトの名無しさん
2023/04/04(火) 10:10:12.84ID:erD0CuRV 今日のマウント合戦
Rubyは凄いと言われてるが
俺に言わせればアッハイとしか言えねぇな。
Rubyは凄いと言われてるが
俺に言わせればアッハイとしか言えねぇな。
842デフォルトの名無しさん
2023/04/04(火) 10:16:31.95ID:cu0WQi3X 内心の自由を侵害している
すごいと思う内心を認めないわけですごくないと思わないといけないわけ?
そんな生き方は疲れると思うね
すごいと思う内心を認めないわけですごくないと思わないといけないわけ?
そんな生き方は疲れると思うね
843デフォルトの名無しさん
2023/04/04(火) 10:19:01.15ID:erD0CuRV アッハイ
844デフォルトの名無しさん
2023/04/04(火) 10:27:06.84ID:cu0WQi3X 他人が違う考え方をしてることを認めないと多様性のある社会では生きにくいね
845デフォルトの名無しさん
2023/04/04(火) 11:26:09.17ID:a5hZWkPv Ruby で、部分文字列を抜き出す
例えば、インデックス1 から、3文字分。
ただし、インデックスは0から始まる
p "aあbいc"[1, 3]
#=> "あbい"
例えば、インデックス1 から、3文字分。
ただし、インデックスは0から始まる
p "aあbいc"[1, 3]
#=> "あbい"
846デフォルトの名無しさん
2023/04/04(火) 14:43:02.54ID:NrMPyXSZ847デフォルトの名無しさん
2023/04/04(火) 15:12:31.90ID:SLB1VKfK > これまではSalesforce(Apex)などを扱っていました。
仕事でapex遊べるんだね、すごい
仕事でapex遊べるんだね、すごい
848デフォルトの名無しさん
2023/04/04(火) 15:30:30.92ID:ktWoV7jH Rubyの特徴として文字列は可変であると知ってたら
それ以上何を驚くことがあるのか
なぜソースを追う必要があるというのか
なぜソースを追って何か得るものがあると期待したのか不思議
うん?そりゃ・・・そりゃそうでしょ?うん
つまり、アッハイとしか言いようがない
それ以上何を驚くことがあるのか
なぜソースを追う必要があるというのか
なぜソースを追って何か得るものがあると期待したのか不思議
うん?そりゃ・・・そりゃそうでしょ?うん
つまり、アッハイとしか言いようがない
849デフォルトの名無しさん
2023/04/04(火) 17:15:07.15ID:erD0CuRV はいはい、そーだねー
850デフォルトの名無しさん
2023/04/04(火) 19:56:39.21ID:/ayUyQoP C言語だと文字列は本当は配列なのですごくもなんともないがRubyだとすごいんだろ
知らんけど
知らんけど
851デフォルトの名無しさん
2023/04/04(火) 20:01:58.33ID:ktWoV7jH 記事のコメントにもあるけど
[]じゃなくて[]=なんよせめてコイツの見るべきは
フォーカスがぶれぶれで何が「すごい」のか伝わらんけど平気なのが「すごい」わ
[]じゃなくて[]=なんよせめてコイツの見るべきは
フォーカスがぶれぶれで何が「すごい」のか伝わらんけど平気なのが「すごい」わ
852デフォルトの名無しさん
2023/04/04(火) 20:07:29.47ID:/ayUyQoP すごいのは取得の方らしいぞ
添字で取得できない言語って何使ってたんだろ
> 文字列も配列のように添字を指定することで、該当する文字を得ることができるみたいですね。
>
> 配列に対して[1]で値が取れるのは個人的に納得できるのですが、なぜ文字列に対してこのようなことができるのでしょうか。
添字で取得できない言語って何使ってたんだろ
> 文字列も配列のように添字を指定することで、該当する文字を得ることができるみたいですね。
>
> 配列に対して[1]で値が取れるのは個人的に納得できるのですが、なぜ文字列に対してこのようなことができるのでしょうか。
853デフォルトの名無しさん
2023/04/04(火) 20:12:58.79ID:/ayUyQoP854デフォルトの名無しさん
2023/04/04(火) 20:23:26.00ID:ktWoV7jH あーなるほど取得がスゴイで正解だったか
もう俺の脳ではついていけないことがわかった
もう俺の脳ではついていけないことがわかった
855デフォルトの名無しさん
2023/04/04(火) 23:42:42.05ID:erD0CuRV C言語みたいに文字列は配列が常識の人には凄さがわからないんだろうね。
配列だから文字を取得するのが出来るのは常識という発想は
古い発想でASCII文字列しか考慮してないんだろうけどw
おじいちゃん、今はUTF-8で一文字のバイト数は可変の時代よ?
C言語のやり方じゃ取得できないの
配列だから文字を取得するのが出来るのは常識という発想は
古い発想でASCII文字列しか考慮してないんだろうけどw
おじいちゃん、今はUTF-8で一文字のバイト数は可変の時代よ?
C言語のやり方じゃ取得できないの
856845
2023/04/04(火) 23:49:51.62ID:xtlScvd1 Ruby では、CP932 でも正常に動く。
一旦、UTF-8 へ変換して処理してから、またCP932へ変換しているのかな?
str_utf8 = "aあbいc"
p str_utf8.encoding #=> <Encoding:UTF-8>
str_cp932 = str_utf8.encode( Encoding::CP932 )
p str_cp932.encoding #=> <Encoding:Windows-31J>
p str_utf8[1, 3] # インデックス1 から、3文字分
#=> "あbい"
p slice_cp932 = str_cp932[1, 3] #=> "\x{82A0}b\x{82A2}"
p slice_cp932.encoding #=> <Encoding:Windows-31J>
p slice_utf8 = slice_cp932.encode( Encoding::UTF_8 ) #=> "あbい"
p slice_utf8.encoding #=> <Encoding:UTF-8>
一旦、UTF-8 へ変換して処理してから、またCP932へ変換しているのかな?
str_utf8 = "aあbいc"
p str_utf8.encoding #=> <Encoding:UTF-8>
str_cp932 = str_utf8.encode( Encoding::CP932 )
p str_cp932.encoding #=> <Encoding:Windows-31J>
p str_utf8[1, 3] # インデックス1 から、3文字分
#=> "あbい"
p slice_cp932 = str_cp932[1, 3] #=> "\x{82A0}b\x{82A2}"
p slice_cp932.encoding #=> <Encoding:Windows-31J>
p slice_utf8 = slice_cp932.encode( Encoding::UTF_8 ) #=> "あbい"
p slice_utf8.encoding #=> <Encoding:UTF-8>
857デフォルトの名無しさん
2023/04/04(火) 23:53:41.39ID:s1fA85/W858デフォルトの名無しさん
2023/04/05(水) 02:14:36.32ID:AynPvYbj >>855
おまえは↓見てスゴイスゴイ言ってれば良いよ。
#include <stdio.h>
void print(const char** s)
{
while (*s) {
printf("%s", *s);
s++;
}
}
int main(void)
{
const char* hello[] = {"こ", "ん", "に", "ち", "は", "世", "界", NULL};
puts(hello[3]);
puts(hello[1]);
puts(hello[0]);
hello[0] = "H";
hello[1] = "e";
hello[2] = hello[3] = "l";
hello[4] = "o";
print(hello);
}
https://wandbox.org/permlink/OtKKJplub0RkTQGy
おまえは↓見てスゴイスゴイ言ってれば良いよ。
#include <stdio.h>
void print(const char** s)
{
while (*s) {
printf("%s", *s);
s++;
}
}
int main(void)
{
const char* hello[] = {"こ", "ん", "に", "ち", "は", "世", "界", NULL};
puts(hello[3]);
puts(hello[1]);
puts(hello[0]);
hello[0] = "H";
hello[1] = "e";
hello[2] = hello[3] = "l";
hello[4] = "o";
print(hello);
}
https://wandbox.org/permlink/OtKKJplub0RkTQGy
859デフォルトの名無しさん
2023/04/05(水) 03:54:38.90ID:/zIzO/Am >>858
そんなの見せられてもC言語はしょぼいなとしか言えんわなw
そんなの見せられてもC言語はしょぼいなとしか言えんわなw
860デフォルトの名無しさん
2023/04/05(水) 08:30:48.03ID:Tk2t3+4w > C言語はしょぼいなとしか言えんわなw
Rubyのあれ見て凄いと言う人の感想なんてこんなもんだろう。
Rubyのあれ見て凄いと言う人の感想なんてこんなもんだろう。
861795
2023/04/05(水) 08:52:04.62ID:PhrX70Dm Cの限界を表したネタコードだぞ
862デフォルトの名無しさん
2023/04/05(水) 11:53:36.19ID:x0KuHrAi863デフォルトの名無しさん
2023/04/05(水) 11:54:17.60ID:jU3TV3ZD Rubyはキチガイ専用言語だから
864デフォルトの名無しさん
2023/04/05(水) 12:01:04.72ID:Wac7S0S8 > 結局さ、お前は「す、すごくないし」って言ってるだけなんだよ
> お前は何も凄いことできないのにね
効いてる効いてるw
> お前は何も凄いことできないのにね
効いてる効いてるw
865デフォルトの名無しさん
2023/04/05(水) 12:07:10.85ID:vCDHSuJP 東浩紀「あの、これさ……自民党は統一教会と関係しているからこのようなテロを招いたということを言った?」
866デフォルトの名無しさん
2023/04/05(水) 12:07:46.45ID:vCDHSuJP 東浩紀「もしかしたら・・(周りの空気を確認)」
石戸諭「それに近い」
三浦瑠麗「ほぼそれに近い」
夏野「まあまあまあまあ」
東浩紀「これは た、い、へ、ん な 発言ですよねぇええ(上擦った声で)」
夏野「そういうことがあるとすれば、という言い方はしてた」
三浦瑠麗「一応保険はかけてらした」
東浩紀「でもね、向こうから言ってるしね。ちょっとこれ大変なことだなぁ」
石戸諭「だから! 福島さんというか だから! 社民党は小さくなるんですよ!」
東浩紀「とんでもねぇ話だなぁこれぇ!?」
三浦瑠麗「私は野党にチャンスを与えた訳でしてね…」
石戸諭「いやぁ!それを見事に蹴っ飛ばしましたね!」
東浩紀「こんなの!許される訳ねぇに!決まってんだろ!」
三浦瑠麗「これはもう間違いなくニュースになりますね。 そして”私に責任はない”はずです。私は牽制球を投げましたから」
石戸諭「いやいや!三浦瑠麗さんには責任では全然ないですよ!福島さんの全責任です!」
三浦瑠麗「びっくりしましたね」
東浩紀&石戸諭「びっくりした!」
東浩紀「いや!これはとんでもない事ですよ! とんでもないなぁ!」
石戸諭「それに近い」
三浦瑠麗「ほぼそれに近い」
夏野「まあまあまあまあ」
東浩紀「これは た、い、へ、ん な 発言ですよねぇええ(上擦った声で)」
夏野「そういうことがあるとすれば、という言い方はしてた」
三浦瑠麗「一応保険はかけてらした」
東浩紀「でもね、向こうから言ってるしね。ちょっとこれ大変なことだなぁ」
石戸諭「だから! 福島さんというか だから! 社民党は小さくなるんですよ!」
東浩紀「とんでもねぇ話だなぁこれぇ!?」
三浦瑠麗「私は野党にチャンスを与えた訳でしてね…」
石戸諭「いやぁ!それを見事に蹴っ飛ばしましたね!」
東浩紀「こんなの!許される訳ねぇに!決まってんだろ!」
三浦瑠麗「これはもう間違いなくニュースになりますね。 そして”私に責任はない”はずです。私は牽制球を投げましたから」
石戸諭「いやいや!三浦瑠麗さんには責任では全然ないですよ!福島さんの全責任です!」
三浦瑠麗「びっくりしましたね」
東浩紀&石戸諭「びっくりした!」
東浩紀「いや!これはとんでもない事ですよ! とんでもないなぁ!」
867デフォルトの名無しさん
2023/04/05(水) 12:12:05.41ID:x0KuHrAi868デフォルトの名無しさん
2023/04/05(水) 12:57:33.53ID:jU3TV3ZD Rubyの話題だとキチガイ乱入でだいたいこんな感じになる
869デフォルトの名無しさん
2023/04/05(水) 20:32:03.53ID:sB818/CP https://qiita.com/ryotaro23/items/ae4fd640648d0b56018e
引かぬ!
媚びぬ!
省みぬ!
いくらマサカリ食らっても確認もせずいい加減な記事を公開し続けるメンタルすげーわ
引かぬ!
媚びぬ!
省みぬ!
いくらマサカリ食らっても確認もせずいい加減な記事を公開し続けるメンタルすげーわ
870デフォルトの名無しさん
2023/04/05(水) 21:07:26.62ID:kJ8vSb5D 自己顕示欲以外に関心は無いので当然
記事が正確かどうか
記事に価値があるかどうか
そんなもんはクソくらえである
記事が正確かどうか
記事に価値があるかどうか
そんなもんはクソくらえである
■ このスレッドは過去ログ倉庫に格納されています
