惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
Check Point Blog
美团技术团队
Jina AI
Jina AI
人人都是产品经理
人人都是产品经理
The Cloudflare Blog
V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
Hugging Face - Blog
Hugging Face - Blog
云风的 BLOG
云风的 BLOG
有赞技术团队
有赞技术团队
T
The Blog of Author Tim Ferriss
WordPress大学
WordPress大学
月光博客
月光博客
宝玉的分享
宝玉的分享
小众软件
小众软件
MongoDB | Blog
MongoDB | Blog
Apple Machine Learning Research
Apple Machine Learning Research
A
About on SuperTechFans
J
Java Code Geeks
博客园_首页
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
N
Netflix TechBlog - Medium
Vercel News
Vercel News
博客园 - 聂微东

嵌入式开发

求推荐支持 eBPF 的国产 ARM 开发板 求个长期合作的逆向开发 ******野火开发板 stm32 教程错误很多***** 嵌入式开发能不能借助 AI 编写程序 有没有类似 ESP32 的芯片,内存要大的? 有干嵌入式的老哥吗? stm32+jlink,使用 swd 调试时经常蓝屏是怎么回事 有干嵌入式的老哥吗,有一个 keil 的问题 =RS485 总线冲突 Gemini 和 Chatgpt 给出不同的答案=== 嵌入式软件工程师如何提升自己? ST-Link 在 CLion 下载失败求助 个人认为嵌入式领域最无用的发明---色环电阻 v 嵌入式设备适合用 vlc 吗 有玩 mcuboot 的吗,可否帮忙看看我的应用为啥启动不了。 解析 pads pt9 格式文件,大家有没有什么好办法解析,可以有偿 请教嵌入式自学路径 嵌入式 AI 系统 SDK 从开发一个六足机器人入手,要怎么做 请教实现 嵌入式二维码扫描的问题, 新手, 非常新 0 基础嵌入式开发学习 嵌入式软件(单片机)相关问题 ESP32C6 系列教学视频,每天增加,大概 20 集,如果有用的可以下载 过年时候写的,劣质古早 mcu 的 TFT 屏幕 +ILI9341 亮度控制方案 嵌入式入职没人带 ,如何提升自己的开发工作经验呢?提升能力?有没有教程推荐 想给和家亲摄像头刷 OpenIPC,求助 u-boot 相关问题 嵌入式软硬件交流贴 嵌入式设备(无任何界面,带喇叭)的语音通话技术选型 需要开发吸顶灯和可视化门铃,有人接单么 业余想学习和玩一下单片机,求助一下 最近的想法<打造下一代的嵌入式软件开发 IDE> 想将投影仪接入米家,请教一下 ESP32 重放投影仪蓝牙遥控器的按键,用于控制投影仪的开关
这段浮点运算代码性能为何如此低下
Leon6868 · 2023-04-12 · via 嵌入式开发
  • 编译环境:ESP-IDF 4.4
  • 运行设备:ESP32S3 ,已经在编译选项中开启性能优化模式,并把 CPU 频率调到了 240MHz 。
  • 目的:模拟 ESP32S3 处理图片,并测试性能
  • 问题:测试时发现,以这个参数执行下来,每次 ESP_LOGI 间隔 163813 微秒,平均下来一次 float 计算要 1 微秒,与芯片性能严重不符。请问是什么原因导致的呢?
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
#include "esp_system.h"
#include "esp_log.h"
#define M2T(X) ((unsigned int)(X) / portTICK_PERIOD_MS) // ms to tick

#include "esp_random.h"

#include <sys/time.h>

static const char *TAG = "main";
#define dataLen 14400

void makeMatrixUint8(uint8_t *buf, int len)
{

    for (int i = 0; i < len; i++)
    {
        esp_fill_random(&buf[i], sizeof(uint8_t));
    }
}
void makeMatrixFloat(float *buf, int len)
{

    for (int i = 0; i < len; i++)
    {
        esp_fill_random(&buf[i], sizeof(float));
    }
}

static void testTask()
{
    uint8_t *testData1 = (uint8_t *)malloc(sizeof(uint8_t) * dataLen);
    float *testData2 = (float *)malloc(sizeof(float) * dataLen);
    struct timeval tv_d0;
    struct timeval tv_d1;

    while (1)
    {
        makeMatrixUint8(testData1, dataLen);
        makeMatrixFloat(testData2, dataLen);
        gettimeofday(&tv_d0, NULL);
        for (int t = 0; t < 10; t++)
        {

            for (int i = 0; i < dataLen; i++)
            {
                testData2[i] = testData1[i] * 0.3;
            }
        }
        gettimeofday(&tv_d1, NULL);
        ESP_LOGI(TAG, "%lu", 1000000 * (tv_d1.tv_sec - tv_d0.tv_sec) + (tv_d1.tv_usec - tv_d0.tv_usec));
        
        vTaskDelay(1);
    }
}

void app_main()
{
    xTaskCreate(testTask, "servoTask", 1024 * 4, NULL, tskIDLE_PRIORITY, NULL);
}