关于我不知道是不是常数优化的【常数优化】

本文介绍了几种常见的代码优化方法,包括减少高时间复杂度函数的调用、优化内存访问模式及选择合适的输入方法。通过实例展示了如何从细节处提高程序运行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

在打代码的很多时候,我们总会遇到很多等效但是时间效率却相差很大的语句,这对于一些大数据的程序优化起到了作用。我选择了几个自己经常遇到的做了一下总结。当然如果任何地方出现了任何错误,欢迎私信或评论指出。

First

我们首先看一段代码

for (i=0;i<=1000000;i++)
{
    a[i]='.';
 } 
a[1000001]=0; 
a[56]='a'; 
int ans=0;
for (int i=0;i<strlen(a);i++)
{
    if (a[i]=='.') ans++; 
} 

我们要求的是点的数量,而这样子写的时间复杂度是很高的,问什么这么说呢?因为strlen本身是一个很慢的函数,它的时间复杂度是O(n)O(n)的,所以我们应当用一个ll来存储strlen(a)的值,这样子我们才做到真正的O(n)
所以我们在循环的时候尽量不要调用时间复杂度比较大的函数,在数据很大时可以大大优化。

Second

对于一个这样的程序

#include<cstdio>
const int N=1005
int a[N][N],b[N][N],c[N][N];
int main()
{
    int ans=0;
    for (int i=0;i<N;i++)
        for (int j=0;j<N;j++)
            for (int k=0;k<N;k++)
            {
                ans+=a[i][j]+b[i][k]+c[k][j];
             } 
 } 

我们运行大概要11秒才能结束。
但是当我们呢把jjk这两层交换的话,我们的时间就下降到了4秒多。首先我们证明jjk互换是不会影响正确性的,那么为什么可以优化这么多时间呢?
这是因为计算机中有一个磁盘,往上有一个主存,再往上有一个快速缓存,越往上总空间越小,但是越快。 我们进行这些操作是在主存,而数组什么的都在主存里。当程序需要调用一个数的时候,程序就会把它放到高速缓存里,然后来回这样穿。但是计算机有局部性,他会访问连续的空间。所以说,当我们把主存的东西放到高速缓存时,是把连续的一段放上去。这个二维数组存的时候转换成了一维,转的时候把一个个连续空间存起来。而原先的方法来回跳,就非常慢。当我们这么调换,就快多了。
所以在好几层循环的时候,我们要注意循环的顺序,让数组调用的时候连续一些。

Third

第三就是要讲一讲读入的问题。
有三种读入的方法:1)cin;2)cout;3)读入优化。他们的时间复杂度由前到后依次递减。所以我们在考虑范围的情况下,要选用正确的读入方式。(其实我并不是很推荐使用cin,太慢了)
关于读入优化,我们要采用函数getchar,因为这个函数很简单,每次就读入一个字符,所以复杂的不高。关于读入优化,代码如下:我不确定对不对

int getint()
{
    char ch=getchar();
    while (ch<'0' || ch>'9') ch=getchar();
    int res=0;
    while ('0'<=ch && ch<='9')
    {
        res=res*10+ch-'0';
        ch=getchar();
    }
    return res;
}//读入优化 

后记

最后只总结到了这里……太菜了导致什么都不会

<think>好的,我现在需要帮助用户了解如何使用HFSS软件建立双频滤波器模型。首先,我得回忆一下HFSS的基本操作流程,HFSS是高频结构仿真软件,常用于微波器件设计。双频滤波器的设计需要考虑两个同的工作频段,结构可能涉及多层谐振器或者耦合结构。 用户可能需要从基础开始,比如如何启动项目、设置材料、绘制结构等。首先,我应该分步骤说明设计流程。然后,双频滤波器的设计关键点在于谐振单元的设计和耦合结构的安排,可能需要使用阶梯阻抗谐振器或者组合同谐振模式。比如,通过调整微带线的长度和宽度来实现双频特性。 接下来,我需要考虑如何在HFSS中设置端口和边界条件,正确的端口设置对S参分析很重要。然后仿真参的设置,比如频率扫描范围,需要覆盖两个目标频段。优化部分可能需要参扫描或者使用优化工具调整尺寸以达到性能要求。 用户可能还会遇到常见问题,比如仿真结果收敛或者频率偏移,这时候需要检查网格设置和边界条件是否正确。此外,引用中的双频天线设计可能有一些参考点,比如集成双频段的方法,但滤波器设计有所同,过多频段结构的设计思路可能有相似之处,比如使用复合结构或者耦合谐振器。 最后,生成相关问题时要考虑用户可能的后续疑问,比如如何优化性能、处理耦合干扰或者实际测试方法。需要确保回答结构清晰,步骤详细,并且提供实际操作的指导,比如参设置的具体值范围或常用材料的选择建议。</think>[用户可见层] ### HFSS双频滤波器建模分步指南 #### 一、基础模型搭建 1. **新建工程**:创建HFSS设计文件,选择"Driven Modal"求解类型 2. **基板设置**:在材料库中选择RO4350B(介电常数3.66)等常用高频板材,厚度建议0.8mm 3. **结构绘制**: - 使用矩形绘制微带馈线(例:50Ω线宽1.5mm) - 添加阶梯阻抗谐振器(SIR)实现双频特性,计算公式: $$ Z_{even} = \frac{Z_1Z_2}{Z_1 + Z_2}, \quad \theta = \beta l $$ #### 二、关键参设置 1. **端口设置**: - 创建Wave Port,设置积分线方向 - 端口宽度建议为基板厚度的5倍以上 2. **边界条件**: - 设置辐射边界(Radiation)或完美匹配层(PML) - 基板底部设为有限导体边界(铜箔参:σ=5.8e7 S/m) #### 三、双频实现方法 1. **谐振单元设计**: - 使用U型槽加载结构,通过调整槽长$L_s$控制第二谐振点 - 交叉耦合结构实现传输零点,公式: $$ f_1 = \frac{c}{4L_1\sqrt{\varepsilon_{eff}}}, \quad f_2 = \frac{c}{4L_2\sqrt{\varepsilon_{eff}}} $$ 2. **参化建模**示例: ```vbscript Dim L1, W1 As Parameter L1 = 12.5mm # 主谐振单元长度 W1 = 1.2mm # 耦合缝隙宽度 ``` #### 四、仿真优化流程 1. **扫频设置**: - Fast模式:2-6GHz(覆盖常用2.4/5GHz双频) - 最大迭代次设置20次 2. **优化方法**: ```mermaid graph TD A[参扫描] --> B(响应曲面分析) B --> C{满足指标?} C -->|Yes| D[导出模型] C -->|No| E[调整耦合间距] ``` #### 五、典型问题处理 1. **频率偏移**:检查材料参设置误差(建议实测板材ε_r) 2. **带外抑制足**:增加谐振单元级(建议3-4级) 3. **插损过大**:检查导体损耗设置,优化耦合系 [^1]: 引用中提到的双频段集成设计思路可借鉴,但需注意滤波器与天线的设计差异
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值