বেজ উপর এই আমি কমান্ড চলমান করছি
< /dev/urandom hexdump -v -e '/1 "%u\n"' |
awk '{ split("0,2,4,5,7,9,11,12",a,",");
for (i = 0; i < 1; i+= 0.0001)
printf("%08X\n", 100*sin(1382*exp((a[$1 % 8]/12)*log(2))*i)) }' |
xxd -r -p |
sox -traw -r44100 -b16 -e unsigned-integer - -tcoreaudio
আমি লক্ষ্য করেছি যে এই কমান্ডটি চলমান থাকাকালীন সময়ে awk দ্বারা ব্যবহৃত স্মৃতি ক্রমবর্ধমানভাবে বৃদ্ধি পায়, উদাহরণস্বরূপ, 75MB কাঁচা অডিও ডেটা খোলার সময়কালে 500MB এর বেশি মেমরি ব্যবহার করা হয়। পাইপলাইনের অন্যান্য সমস্ত কমান্ড মেমরির একটি ধ্রুবক পরিমাণ বজায় রাখে।
এই মেমোরিটির জন্য কী ব্যবহার করা যায় এবং কী এমন বিকল্প রয়েছে যা কেবলমাত্র ধ্রুব পরিমাণের মেমরি ব্যবহার করে অভিযুক্ত স্ট্রিম প্রসেসিং করে?
যদি উইন্ডো সংস্করণটি গুরুত্বপূর্ণ হয়:
⑆ awk --version
awk version 20070501
টমাস ডিকির উত্তরের উপর ভিত্তি করে আমি যে কমান্ডটি পরীক্ষা করেছিলাম তা এখানে:
< /dev/urandom hexdump -v -e '/1 "%u\n"' |
awk 'BEGIN { split("0,2,4,5,7,9,11,12",a,",") }
{ for (i = 0; i < 1; i+= 0.0001)
printf("%08X\n", 100*sin(1382*exp((a[$1 % 8]/12)*log(2))*i)) }' |
xxd -r -p |
sox -traw -r44100 -b16 -e unsigned-integer - -tcoreaudio
Here's the command I tested...
কিন্তু আপনি আমাদের সেই পরীক্ষার ফলাফল বলতে ভুলে গিয়েছিলেন - এটি সমস্যার সমাধান করেছিল নাকি? এটি যেহেতু a[]
লুপের কোনও উপাদানের প্রতিটি রেফারেন্স এন্ট্রি তৈরি করে যদি সেগুলি না থাকে তবে এটি না - আপনি স্পষ্ট করে অ্যারেটি বিভক্ত করার আগে বা এটি ব্যবহার করার পরে মুছে ফেললে কী সহায়তা করবে awk '{ delete a; split("0,2,4,5,7,9,11,12",a,","); for (i = 0; i < 1; i+= 0.0001) printf("%08X\n", 100*sin(1382*exp((a[$1 % 8]/12)*log(2))*i)) }'
? সেই কোড সেগমেন্টের সাহায্যে আপনাকে বিভাজনে () এটির মূল স্থানে ছেড়ে যাওয়া দরকার, এটিকে বিগইনে স্থানান্তরিত করবেন না।